我有一个自定义控制台命令,需要通过一些公司循环并为每个公司建立一个数据库。该命令现在可用,但只有一次。它不会在循环中第二次运行迁移。所以基本上,如果我有2个空白数据块(db_on
e和db_two
),配置将首次运行并迁移db_one
,当循环再次运行时,db_two
没有任何反应。如果我将控制台命令替换为仅回显数据库名称,它将返回两者,因此我知道它不是循环。另外,如果我注销循环的每个连接中使用的数据库,则它是正确的数据库。工匠呼叫循环
这里是命令:
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'));
}
}
日志错误:
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=
日志文件的含义告诉你什么? – Webdesigner
@Webdesigner我添加了我在日志中看到的最高错误(不是整个堆栈跟踪) – Packy
而这个错误是你命令的直接结果?你有什么Larael版本? – Webdesigner