Bonjour,
Je créer automatiquement une base de données pour chaque compte "Entreprise" au sein de mon application. Pour ce faire, j'édite les fichiers : .env
et doctrie.yaml
et je créer également un utilisateur dédié pour chaque base de données que je créer sur mon SGBD.
Voici, les lignes que j'ajoute sur mon .env
et mon doctrine.yaml
:
Voici la ligne que j'ajoute en gras dans mon .env
:
DATABASE_[ID_COMPANY]_URL="mysql://[USER_COMPANY]:[PASSWORD_COMPANY]@database:3306/[DB_NAME_COMPANY]?serverVersion=mariadb-10.4.21&charset=utf8mb4"
Voici les lignes que j'ajoute dans mon doctrine.yaml (j'ai ajouté un peu de contexte :
[doctrine.yaml]
doctrine:
dbal:
connections:
keeb:
url: '%env(resolve:DATABASE_KEEB_URL)%'
driver: 'pdo_mysql'
server_version: '5.7'
charset: utf8mb4
orm:
entity_managers:
keeb:
connection: keeb
mappings:
keeb:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Entity'
prefix: 'App\Entity'
alias: keeb
Globalement, les fichiers sont bien édités de la manière que je souhaite, j'ai bien mon nouvel utilisateur qui est créé dans mon SGBD. Cependant, lorsque j'exécute la commande suivante : php bin/console doctrine:database:create --connection=keeb
. Ça ne fonctionne pas en mode prod
, mais en mode dev
ça marche. Afin d'exécuter cette commande, j'utilise Process de Symfony, soit la commande suivante :
// Run for : php bin/console doctrine:database:create --connection=$dbName
$process = new Process(['php', '/srv/app/bin/console', 'doctrine:database:create', "--connection=$dbName"]);
$process->run();
if (!$process->isSuccessful()) throw new ProcessFailedException($process);
Le problème est que j'ai une erreur du type : Doctrine ORM Connection named "test" does not exist.
Merci d'avance pour vos réponses, je reste disponible pour enrichir mon explication si besoin.
PS : j'évolue sur un environnement Docker
Hello, il se trouve qu'éditer les fichiers de configuration sur Symfony en runtime n'est pas possible car ces mêmes fichiers sont dumper par Symfony en environement de production. On a donc décider de modifier la création de BDD en ne passant plus par l'édition des fichiers de configuration mais directement avec du code et ça semble fonctionner. Merci pour ton aide ;)
Hello, tu as une db test en mode dev?
Si c'est le cas Symfony doit essayer de lancer une base de test qui n'existe pas en prod, il faura juste trouver l'endroit où il lance la migration de test, le retirer et le placer dans l'env de dev uniquement
Hello, merci pour ta réponse, j'ai pris l'exemple de "test" qui serait le nom de l'entreprise, mais du coup on aurait une bdd comme ça :
[Fichier : .env]
DATABASE_TEST_URL="mysql://starterp_test:mot_de_passe@database:3306/starterp_test?serverVersion=mariadb-10.4.21&charset=utf8mb4"
En gros, le nom réel de la bdd serait : starterp_test
avec le prefixe starterp_ qui est le nom de mon application.
Et on aurait pour le fichier doctrine.yaml
:
[Fichier : doctrine.yaml]
doctrine:
dbal:
connections:
keeb:
url: '%env(resolve:DATABASE_KEEB_URL)%'
driver: 'pdo_mysql'
server_version: '5.7'
charset: utf8mb4
test:
url: '%env(resolve:DATABASE_TEST_URL)%'
driver: 'pdo_mysql'
server_version: '5.7'
charset: utf8mb4
orm:
entity_managers:
keeb:
connection: keeb
mappings:
keeb:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Entity'
prefix: 'App\Entity'
alias: keeb
test:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Entity'
prefix: 'App\Entity'
alias: test
Et si j'essaye avec n'importe quelle autre nom, ça ne marche pas, le plus bizarre. C'est que ça marche quand je suis en mode "dev" mais dés que je passe en mode "prod" que ce soit sur mon serveur ou mon ordi en local, la génération de la base de données ne marche plus car il ne reconnaire plus la connection "test" alors qu'elle figure bien dans le .env
et dans le doctrine.yaml
.
Voilà, voilà
Mmmh je vois, je peux voir ton fichier .env entier (penses à virer les infos privées avant de poster :p)?
Ensuite le problème peut venir de l'hébergeur, tu est sur quel hébergeur?
Pour ce qui est de l'hébergeur, tu as pensé à placer tes variables d'env dans l'hébergeur ou dans des Github secrets? Certains hébergeurs ignorent le fichier .env, copient le .env.example et remplace les variables par celle que tu a définies directement dans l'interface de l'hebergeur
Yep, je peux te transmettre mon .env
:
APP_ENV=dev
APP_SECRET=
MESSENGER_TRANSPORT_DSN=doctrine://default?auto_setup=0
MYSQL_USER=user
MYSQL_PASSWORD=
MYSQL_DATABASE=starterp
MYSQL_ROOT_PASSWORD=
SERVER_NAME=*.localhost
MAILER_DSN=smtp://:@pro1.mail.ovh.net:587
API_TOKEN_INSEE=""
DATABASE_URL="mysql://root:@database:3306/starterp?serverVersion=10.4.26-MariaDB-1:10.4.26+maria~ubu2004&charset=utf8mb4"
DATABASE_FREEMIUM_URL="mysql://root:@database:3306/starterp_freemium?serverVersion=10.4.26-MariaDB-1:10.4.26+maria~ubu2004&charset=utf8mb4"
DATABASE_INOFIVE_URL="mysql://root:@database:3306/starterp_inofive?serverVersion=mariadb-10.4.21&charset=utf8mb4"
DATABASE_KEEB_URL="mysql://root:@database:3306/starterp_keeb?serverVersion=mariadb-10.4.21&charset=utf8mb4"
DATABASE_STARTERP_URL="mysql://root:@database:3306/starterp_starterp?serverVersion=mariadb-10.4.21&charset=utf8mb4"
DATABASE_TEST_URL="mysql://starterp_test:@database:3306/starterp_test?serverVersion=mariadb-10.4.21&charset=utf8mb4"
Je viens de me rendre compte que la variable APP_ENV
n'est pas set sur prod mais dev, c'est bizarre. Mais normalement ça ne devrait pas impacter le fonctionement de la création d'une base de données. Voici le bout de code qui permet de générer ma base de données suite à l'édition des fichiers : .env
et doctrine.yaml
:
// Then we create a specific mysql user for the company
$multiBDDService->addMysqlUser($company);
// Get the database name to target the entity manager
[$dbName, $dbURL] = $multiBDDService->formatDBName($company);
// Run for : php bin/console doctrine:database:create --connection=$dbName
$process = new Process(['php', '/srv/app/bin/console', 'doctrine:database:create', "--connection=$dbName"]);
$process->run();
if (!$process->isSuccessful()) throw new ProcessFailedException($process);
// Run for : php bin/console doctrine:migrations:migrate --em=$dbName --no-interaction
$process = new Process(['php', '/srv/app/bin/console', 'doctrine:migrations:migrate', "--em=$dbName", "--no-interaction"]);
$process->run();
if (!$process->isSuccessful()) throw new ProcessFailedException($process);
// Finally, we need to reduce permission for the user that we created before
$multiBDDService->updateMysqlUser($company);
// We set the new status
$company->setStatus(CompanyService::STATUS_EXPORTED);
// Then we can save the status
$doctrine->getManager()->persist($company);
$doctrine->getManager()->flush();
Et voici mon doctrine.yaml
:
doctrine:
dbal:
default_connection: default
connections:
default:
# configure these for your database server
url: '%env(resolve:DATABASE_URL)%'
driver: 'pdo_mysql'
server_version: '5.7'
charset: utf8mb4
freemium:
# configure these for your database server
url: '%env(resolve:DATABASE_FREEMIUM_URL)%'
driver: 'pdo_mysql'
server_version: '5.7'
charset: utf8mb4
# BELOW ARE AUTO IMPORTED CONFIG USING THE CONNECTION TAG
inofive:
url: '%env(resolve:DATABASE_INOFIVE_URL)%'
driver: 'pdo_mysql'
server_version: '5.7'
charset: utf8mb4
keeb:
url: '%env(resolve:DATABASE_KEEB_URL)%'
driver: 'pdo_mysql'
server_version: '5.7'
charset: utf8mb4
starterp:
url: '%env(resolve:DATABASE_STARTERP_URL)%'
driver: 'pdo_mysql'
server_version: '5.7'
charset: utf8mb4
test:
url: '%env(resolve:DATABASE_TEST_URL)%'
driver: 'pdo_mysql'
server_version: '5.7'
charset: utf8mb4
###CONNECTION_TAG_NO_DELETE###
# IMPORTANT: You MUST configure your server version,
# either here or in the DATABASE_URL env var (see .env file)
#server_version: '13'
orm:
auto_generate_proxy_classes: true
default_entity_manager: default
entity_managers:
default:
connection: default
mappings:
default:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Entity'
prefix: 'App\Entity'
alias: default
freemium:
connection: freemium
mappings:
freemium:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Entity'
prefix: 'App\Entity'
alias: freemium
# BELOW ARE AUTO IMPORTED CONFIG USING THE ENTITY_MANAGER TAG
inofive:
connection: inofive
mappings:
inofive:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Entity'
prefix: 'App\Entity'
alias: inofive
keeb:
connection: keeb
mappings:
keeb:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Entity'
prefix: 'App\Entity'
alias: keeb
starterp:
connection: starterp
mappings:
starterp:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Entity'
prefix: 'App\Entity'
alias: starterp
test:
connection: test
mappings:
test:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Entity'
prefix: 'App\Entity'
alias: test
###ENTITY_MANAGER_TAG_NO_DELETE###
when@test:
doctrine:
dbal:
# "TEST_TOKEN" is typically set by ParaTest
dbname_suffix: ''
when@prod:
doctrine:
orm:
auto_generate_proxy_classes: false
query_cache_driver:
type: pool
pool: doctrine.system_cache_pool
result_cache_driver:
type: pool
pool: doctrine.result_cache_pool
framework:
cache:
pools:
doctrine.result_cache_pool:
adapter: cache.app
doctrine.system_cache_pool:
adapter: cache.system
Je tiens également à préciser que j'utilise des conteneurs Docker pour faire fonctionner mon app (je pense que Docker peut-être la source de mes problèmes).
Concernant l'hébergeur, merci pour les informations, je vais en parler avec mon équipe de projet.
J'ajoute également le résultat d'une commande lorsque je tape la commande php bin/console doctrine:database:create --connection=test
dans un terminal, ça ne fonctionne pas non plus...
{"message":"Error thrown while running command \"doctrine:database:create --connection=test\". Message: \"Doctrine ORM Connection named \"test\" does not exist.\"","context":{"exception":{"class":"InvalidArgumentException","message":"Doctrine ORM Connection named \"test\" does not exist.","code":0,"file":"/srv/app/vendor/doctrine/persistence/src/Persistence/AbstractManagerRegistry.php:101"},"command":"doctrine:database:create --connection=test","message":"Doctrine ORM Connection named \"test\" does not exist."},"level":500,"level_name":"CRITICAL","channel":"console","datetime":"2022-11-19T18:58:54.564948+00:00","extra":{}}
18:58:54 CRITICAL [console] Error thrown while running command "doctrine:database:create --connection=test". Message: "Doctrine ORM Connection named "test" does not exist." ["exception" => InvalidArgumentException { …},"command" => "doctrine:database:create --connection=test","message" => "Doctrine ORM Connection named "test" does not exist."]
{"message":"Command \"doctrine:database:create --connection=test\" exited with code \"1\"","context":{"command":"doctrine:database:create --connection=test","code":1},"level":100,"level_name":"DEBUG","channel":"console","datetime":"2022-11-19T18:58:54.571147+00:00","extra":{}}
Okay je ne vois pas de soucis dans ces fichiers (bon vu que ça fonctionnait en dev je m'en doutais ^^')
Sinon pour tes environnements, tu devrait faire un fichier .env.production
pour le .env
de prod, ensuite dans Docker copier le .env.production COPY .env.production /path/du/container/.env
, ça te permettra d'adapter l'environnement pour la prod :p
Ah et je peux avoir ton Dockerfile? et si tu utilises un container PHP/Apache-Nginx faudrait voir aussi les fichiers de conf apache/nginx que tu pousses dans le container :)
Pour la création de base de données, quand tu lances des commandes en prod tu as des logs coté hébergeur? (problèmes de permissions ou autre)
Autre question, quand tu testes en dev, tu montes un container Docker ou tu testes le code directement? En principe si tu passes par Docker en local et que ça fonctionne ça devrait fontionner en prod aussi, c'est le principe de Docker
Merci encore pour ton aide, alors, quand je run mon app en local sur mon ordi (en dev), je la run avec Docker avec les mêmes container, donc c'est étrange que ça ne fonctionne pas...
Voici le log d'erreur associer à la création de la base de données :
{"message":"Uncaught PHP Exception Symfony\\Component\\Process\\Exception\\ProcessFailedException: \"The command \"'php' '/srv/app/bin/console' 'doctrine:database:create' '--connection=test'\" failed.\n\nExit Code: 1(General error)\n\nWorking directory: /srv/app/public\n\nOutput:\n================\n\n\nError Output:\n================\n{\"message\":\"Error thrown while running command \\\"doctrine:database:create --connection=test\\\". Message: \\\"Doctrine ORM Connection named \\\"test\\\" does not exist.\\\"\",\"context\":{\"exception\":{\"class\":\"InvalidArgumentException\",\"message\":\"Doctrine ORM Connection named \\\"test\\\" does not exist.\",\"code\":0,\"file\":\"/srv/app/vendor/doctrine/persistence/src/Persistence/AbstractManagerRegistry.php:101\"},\"command\":\"doctrine:database:create --connection=test\",\"message\":\"Doctrine ORM Connection named \\\"test\\\" does not exist.\"},\"level\":500,\"level_name\":\"CRITICAL\",\"channel\":\"console\",\"datetime\":\"2022-11-20T13:18:56.718705+00:00\",\"extra\":{}}\n13:18:56 CRITICAL [console] Error thrown while running command \"doctrine:database:create --connection=test\". Message: \"Doctrine ORM Connection named \"test\" does not exist.\" [\"exception\" => InvalidArgumentException { …},\"command\" => \"doctrine:database:create --connection=test\",\"message\" => \"Doctrine ORM Connection named \"test\" does not exist.\"]\n{\"message\":\"Command \\\"doctrine:database:create --connection=test\\\" exited with code \\\"1\\\"\",\"context\":{\"command\":\"doctrine:database:create --connection=test\",\"code\":1},\"level\":100,\"level_name\":\"DEBUG\",\"channel\":\"console\",\"datetime\":\"2022-11-20T13:18:56.727596+00:00\",\"extra\":{}}\n\nIn AbstractManagerRegistry.php line 101:\n \n Doctrine ORM Connection named \"test\" does not exist. \n \n\ndoctrine:database:create [-s|--shard SHARD] [-c|--connection [CONNECTION]] [--if-not-exists]\n\n\" at /srv/app/src/Controller/StarterpController.php line 324","context":{"exception":{"class":"Symfony\\Component\\Process\\Exception\\ProcessFailedException","message":"The command \"'php' '/srv/app/bin/console' 'doctrine:database:create' '--connection=test'\" failed.\n\nExit Code: 1(General error)\n\nWorking directory: /srv/app/public\n\nOutput:\n================\n\n\nError Output:\n================\n{\"message\":\"Error thrown while running command \\\"doctrine:database:create --connection=test\\\". Message: \\\"Doctrine ORM Connection named \\\"test\\\" does not exist.\\\"\",\"context\":{\"exception\":{\"class\":\"InvalidArgumentException\",\"message\":\"Doctrine ORM Connection named \\\"test\\\" does not exist.\",\"code\":0,\"file\":\"/srv/app/vendor/doctrine/persistence/src/Persistence/AbstractManagerRegistry.php:101\"},\"command\":\"doctrine:database:create --connection=test\",\"message\":\"Doctrine ORM Connection named \\\"test\\\" does not exist.\"},\"level\":500,\"level_name\":\"CRITICAL\",\"channel\":\"console\",\"datetime\":\"2022-11-20T13:18:56.718705+00:00\",\"extra\":{}}\n13:18:56 CRITICAL [console] Error thrown while running command \"doctrine:database:create --connection=test\". Message: \"Doctrine ORM Connection named \"test\" does not exist.\" [\"exception\" => InvalidArgumentException { …},\"command\" => \"doctrine:database:create --connection=test\",\"message\" => \"Doctrine ORM Connection named \"test\" does not exist.\"]\n{\"message\":\"Command \\\"doctrine:database:create --connection=test\\\" exited with code \\\"1\\\"\",\"context\":{\"command\":\"doctrine:database:create --connection=test\",\"code\":1},\"level\":100,\"level_name\":\"DEBUG\",\"channel\":\"console\",\"datetime\":\"2022-11-20T13:18:56.727596+00:00\",\"extra\":{}}\n\nIn AbstractManagerRegistry.php line 101:\n \n Doctrine ORM Connection named \"test\" does not exist. \n \n\ndoctrine:database:create [-s|--shard SHARD] [-c|--connection [CONNECTION]] [--if-not-exists]\n\n","code":0,"file":"/srv/app/src/Controller/StarterpController.php:324"}},"level":500,"level_name":"CRITICAL","channel":"request","datetime":"2022-11-20T13:18:56.734149+00:00","extra":{}}
Voici mon Dockerfile :
# the different stages of this Dockerfile are meant to be built into separate images
# https://docs.docker.com/develop/develop-images/multistage-build/#stop-at-a-specific-build-stage
# https://docs.docker.com/compose/compose-file/#target
# https://docs.docker.com/engine/reference/builder/#understand-how-arg-and-from-interact
ARG PHP_VERSION=7.4.30
ARG CADDY_VERSION=2
ARG SYMFONY_VERSION=5.4
# "php" stage
FROM php:${PHP_VERSION}-fpm-alpine AS symfony_php
# persistent / runtime deps
RUN apk add --no-cache \
acl \
fcgi \
file \
gettext \
git \
gnu-libiconv \
;
# install gnu-libiconv and set LD_PRELOAD env to make iconv work fully on Alpine image.
# see https://github.com/docker-library/php/issues/240#issuecomment-763112749
ENV LD_PRELOAD /usr/lib/preloadable_libiconv.so
ARG APCU_VERSION=5.1.21
RUN set -eux; \
apk add --no-cache --virtual .build-deps \
$PHPIZE_DEPS \
icu-dev \
libzip-dev \
zlib-dev \
; \
\
docker-php-ext-configure zip; \
docker-php-ext-install -j$(nproc) \
intl \
zip \
; \
pecl install \
apcu-${APCU_VERSION} \
; \
pecl clear-cache; \
docker-php-ext-enable \
apcu \
opcache \
; \
\
runDeps="$( \
scanelf --needed --nobanner --format '%n#p' --recursive /usr/local/lib/php/extensions \
| tr ',' '\n' \
| sort -u \
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
)"; \
apk add --no-cache --virtual .phpexts-rundeps $runDeps; \
\
apk del .build-deps
RUN docker-php-ext-install pdo_mysql
COPY docker/php/docker-healthcheck.sh /usr/local/bin/docker-healthcheck
RUN chmod +x /usr/local/bin/docker-healthcheck
HEALTHCHECK --interval=10s --timeout=3s --retries=3 CMD ["docker-healthcheck"]
RUN ln -s $PHP_INI_DIR/php.ini-production $PHP_INI_DIR/php.ini
COPY docker/php/conf.d/symfony.prod.ini $PHP_INI_DIR/conf.d/symfony.ini
COPY docker/php/php-fpm.d/zz-docker.conf /usr/local/etc/php-fpm.d/zz-docker.conf
COPY docker/php/docker-entrypoint.sh /usr/local/bin/docker-entrypoint
RUN chmod +x /usr/local/bin/docker-entrypoint
VOLUME /var/run/php
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
# https://getcomposer.org/doc/03-cli.md#composer-allow-superuser
ENV COMPOSER_ALLOW_SUPERUSER=1
ENV PATH="${PATH}:/root/.composer/vendor/bin"
WORKDIR /srv/app
###> recipes ###
###< recipes ###
COPY . .
RUN set -eux; \
mkdir -p var/cache var/log; \
composer install --prefer-dist --no-dev --no-progress --no-scripts --no-interaction; \
composer dump-autoload --classmap-authoritative --no-dev; \
composer symfony:dump-env prod; \
composer run-script --no-dev post-install-cmd
RUN chmod +x bin/console; sync
VOLUME /srv/app/var
ENTRYPOINT ["docker-entrypoint"]
CMD ["php-fpm"]
FROM caddy:${CADDY_VERSION} AS symfony_caddy
WORKDIR /srv/app
COPY --from=symfony_php /srv/app/public public/
COPY docker/caddy/Caddyfile /etc/caddy/Caddyfile
J'aimerais également ajouter, que l'erreur est la suivante : Doctrine ORM Connection named "test" does not exist.
Or, si je tape la commande suivante : php bin/console debug:container --parameter=doctrine.connections --env=prod --format=json
J'obtient bien une connection test, j'ai également cette connection dans mon doctrine.yaml
:
{
"doctrine.connections": {
"default": "doctrine.dbal.default_connection",
"freemium": "doctrine.dbal.freemium_connection",
"inofive": "doctrine.dbal.inofive_connection",
"keeb": "doctrine.dbal.keeb_connection",
"starterp": "doctrine.dbal.starterp_connection",
"test": "doctrine.dbal.test_connection"
}
}
Merci, bonne journée
Mmmh ok je vois, alors c'est peut être l'env le problème
Quand tu run ta commande, par défaut le --env=
doit prendre l'env affiché dans le fichier .env
qui est dev
Faurait modifier cette partie de Dockerfile:
COPY . .
Pour copier l'app sans les .env, ensuite dans ton Dockerfile il faudrait une variable $TARGET_ENV
ou un truc du genre, et quand ton $TARGET_ENV
est prod
il faudrait copier un autre fichier .env
, en gros fait un fichier .env.production
avec la variable APP_ENV à prod, et fait ça sur Dockerfile:
COPY .env.production .env
Ca devrait régler le problème :)
Je pense pas que l'erreur vienne directement de mon .env
mais plus de Doctrine...
Alors, j'ai investiguer un peu plus en détails sur le problème, la fameuse erreur : Doctrine ORM Connection named "test" does not exist.
Or, si j'execute la commande suivante : php bin/console debug:container --parameter=doctrine.connections --env=prod --format=json
J'obtient bien :
{
"doctrine.connections": {
"default": "doctrine.dbal.default_connection",
"freemium": "doctrine.dbal.freemium_connection",
"inofive": "doctrine.dbal.inofive_connection",
"keeb": "doctrine.dbal.keeb_connection",
"starterp": "doctrine.dbal.starterp_connection",
"test": "doctrine.dbal.test_connection"
}
}
Or, si j'execute la commande suivante : php bin/console doctrine:database:create --connection=test"
J'ai l'erreur suivante : Doctrine ORM Connection named "test" does not exist.
Voici, l'erreur en plus détailler :
{"message":"Error thrown while running command \"doctrine:database:create --connection=test\". Message: \"Doctrine ORM Connection named \"test\" does not exist.\"","context":{"exception":{"class":"InvalidArgumentException","message":"Doctrine ORM Connection named \"test\" does not exist.","code":0,"file":"/srv/app/vendor/doctrine/persistence/src/Persistence/AbstractManagerRegistry.php:101"},"command":"doctrine:database:create --connection=test","message":"Doctrine ORM Connection named \"test\" does not exist."},"level":500,"level_name":"CRITICAL","channel":"console","datetime":"2022-11-22T13:39:56.849287+00:00","extra":{}}
13:39:56 CRITICAL [console] Error thrown while running command "doctrine:database:create --connection=test". Message: "Doctrine ORM Connection named "test" does not exist." ["exception" => InvalidArgumentException { …},"command" => "doctrine:database:create --connection=test","message" => "Doctrine ORM Connection named "test" does not exist."]
{"message":"Command \"doctrine:database:create --connection=test\" exited with code \"1\"","context":{"command":"doctrine:database:create --connection=test","code":1},"level":100,"level_name":"DEBUG","channel":"console","datetime":"2022-11-22T13:39:56.855465+00:00","extra":{}}
Merci, bonne journée
Doctrine fonctionne avec le fichier d'env, et quand tu ajoutes --env=
tu écrases la valeur APP_ENV
Après oui mieux vaut s'en assurer, essayes cette commande php bin/console debug:container --env=prod
, si ça fonctionne c'est le fichier d'env, si ça ne fonctionne pas essayes php bin/console debug:container --parameter=doctrine.connections --format=json
Hello, désolé pour le retard de ma réponse ;)
Alors j'ai déjà essayer, c'est ce que j'avais indiquer dans mon précédent post, à moins que je ne comprenne pas ta question ?
Pas de soucis x)
Alors en gros tu reprends ta commande qui fonctionne bien, et tu enlèves uniquement le flag --env=prod
et en conservant les flags --parameter=doctrine.connections --format=json
Si tu choppes ton erreur c'est que le problème vient de l'env, si ça fonctionne alors fait l'inverse, tu retires --parameter=doctrine.connections --format=json
et tu places uniquement --env=prod
, si tu choppes une erreur c'et qu'il faut ajouter ces deux flags parameter et format :p
Yep, j'ai essayer les deux commandes :
php bin/console debug:container --parameter=doctrine.entity_managers --format=json
=> OK
php bin/console debug:container --env=prod
=> OK
Arf je viens à peine de me rendre compte que c'était une toute autre commande :'X
php bin/console doctrine:database:create --connection=test --env=prod
En fait fallait faire ça ^^'