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.yamlet 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