laravel - 架构连接无法链接到非默认数据库
问题描述
我有两个 sql server 数据库。我尝试使用迁移将列添加到第二个数据库(sqlsrv2)。我试过 Schema::connection 但它总是链接到默认数据库(sqlsrv)。下面提供了我的代码。请指教。谢谢。
在 .env 文件中
DB_CONNECTION=sqlsrv
DB_HOST=hostname1
DB_PORT=1433
DB_DATABASE=database1
DB_USERNAME=user1
DB_PASSWORD=123
DB_CONNECTION_SECOND=sqlsrv
DB_HOST_SECOND=hostname2
DB_PORT_SECOND=1433
DB_DATABASE_SECOND=database2
DB_USERNAME_SECOND=user2
DB_PASSWORD_SECOND=123
在 database.php 中
'sqlsrv' => [
'driver' => 'sqlsrv',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '1433'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
'prefix_indexes' => true,
],
'sqlsrv2' => [
'driver' => env('DB_CONNECTION_SECOND'),
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST_SECOND'),
'port' => env('DB_PORT_SECOND'),
'database' => env('DB_DATABASE_SECOND'),
'username' => env('DB_USERNAME_SECOND'),
'password' => env('DB_PASSWORD_SECOND'),
'charset' => 'utf8',
'prefix' => '',
'prefix_indexes' => true,
],
在迁移文件中
public function up()
{
Schema::connection('sqlsrv2')->table('staff', function (Blueprint $table) {
$table->string('system_id');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::connection('sqlsrv2')->table('staff', function (Blueprint $table) {
$table->dropcolumn('system_id');
});
}
解决方案
我知道这可能有点简单,你可能已经尝试过了,但是做一个
php artisan optimize
或者
php artisan config:cache
可能会在某处向您显示问题,或者只是刷新配置缓存。
这是一个非常简单的命令,我相信您已经尝试过,但是 99% 的时间我都会遇到像这样的奇怪问题,我只是运行这些类型的命令,问题就解决了。
希望这在某种程度上有所帮助!祝你好运!