首页 > 解决方案 > 架构连接无法链接到非默认数据库

问题描述

我有两个 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');
        });
    }

标签: laravellaravel-5

解决方案


我知道这可能有点简单,你可能已经尝试过了,但是做一个

php artisan optimize 或者 php artisan config:cache

可能会在某处向您显示问题,或者只是刷新配置缓存。

这是一个非常简单的命令,我相信您已经尝试过,但是 99% 的时间我都会遇到像这样的奇怪问题,我只是运行这些类型的命令,问题就解决了。

希望这在某种程度上有所帮助!祝你好运!


推荐阅读