J'ai une commande de console personnalisée qui doit faire défiler certaines entreprises et créer une base de données pour chacune. La commande fonctionne maintenant, mais seulement une fois. Il n'exécute pas la migration une deuxième fois dans la boucle. Donc, fondamentalement, si j'ai 2 DB vides (db_on
e et db_two
) la config s'exécute et migre la première fois pour db_one
et lorsque la boucle s'exécute à nouveau, rien ne se passe à db_two
. Si je remplace la commande de la console par l'écho du nom de la base de données, elle renvoie les deux, donc je sais que ce n'est pas la boucle. Aussi, si je déconnecte le DB utilisé dans chaque connexion de la boucle, c'est le bon DB.Artisan Call in Loop
Voici la commande:
public function handle()
{
$companies = Company::all();
foreach($companies as $company)
{
\Config::set('database.connections.company.database', $company->db_name);
Artisan::call('migrate', [
'--database' => 'company',
'--path' => 'database/migrations/company',
]);
$this->info( config('database.connections.company.database'));
}
}
erreur du journal:
local.ERROR: Database [10_barrel] not configured. {"userId":1,"email":"[email protected]","exception":"[object] (InvalidArgumentException(code: 0): Database [db_2] not configured. at /Users/Sites/cheers/vendor/laravel/framework/src/Illuminate/Database/DatabaseManager.php:140)
database.php
'connections' => [
'main' => [
'driver' => 'mysql',
'host' => env('MAIN_DB_HOST', '127.0.0.1'),
'port' => env('MAIN_DB_PORT', '3306'),
'database' => env('MAIN_DB_DATABASE', 'forge'),
'username' => env('MAIN_DB_USERNAME', 'forge'),
'password' => env('MAIN_DB_PASSWORD', ''),
'unix_socket' => env('MAIN_DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
'company' => [
'driver' => 'mysql',
'host' => env('COMPANY_DB_HOST', '127.0.0.1'),
'port' => env('COMPANY_DB_PORT', '3306'),
'database' => '',
'username' => env('COMPANY_DB_USERNAME'),
'password' => env('COMPANY_DB_PASSWORD'),
'unix_socket' => env('COMPANY_DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
]
env:
COMPANY_DB_HOST=127.0.0.1
COMPANY_DB_PORT=3306
COMPANY_DB_USERNAME=root
COMPANY_DB_PASSWORD=
Quelle est la dose que le fichier journal vous indique? – Webdesigner
@Webdesigner J'ai ajouté l'erreur supérieure que j'ai vu dans le journal (pas toute la trace de la pile) – Packy
Et cette erreur est un résultat direct de votre commande? Quelle version de Larael avez-vous? – Webdesigner