首页 > 解决方案 > Laravel 6 - 在 database.php 中配置的第二个数据库,但仍然收到数据库连接 [] 未配置

问题描述

我想创建第二个数据库作为备份。我一直在关注另一个 SO 问题解决方案和其他导致同样事情的网站。我在 .env 中添加了一个新的数据库连接,并在 database.php 中对其进行了配置,使用php artisan config:cache. 当我尝试使用迁移时php artisan migrate --database=backup_literature_review_management,它显示 InvalidArgumentException, Database connection [backup_literature_review_management] 未配置。

.env

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=literature_review_management
DB_USERNAME=root
DB_PASSWORD=

DB_CONNECTION_BACKUP=mysql
DB_HOST_BACKUP=127.0.0.1
DB_PORT_BACKUP=3306
DB_DATABASE_BACKUP=backup_literature_review_management
DB_USERNAME=root
DB_PASSWORD=

数据库.php

'connections' => [
        'mysql' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],
        ],

        'mysql2' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST_BACKUP', '127.0.0.1'),
            'port' => env('DB_PORT_BACKUP', '3306'),
            'database' => env('DB_DATABASE_BACKUP', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],
        ],

    ],

迁移前清除缓存

php artisan config:cache

尝试迁移到第二个数据库

php artisan migrate --database="backup_literature_review_management"

错误

InvalidArgumentException,未配置数据库连接 [backup_literature_review_management]。

标签: phpdatabaselaravelmultiple-databases

解决方案


您正在调用错误的连接。用这个:

php artisan migrate --database="mysql2"

您还可以在迁移文件中定义连接,例如:

Schema::connection('mysql2')->create('table', function (Blueprint $table) {...

使用最后一个命令,您可以--database="mysql2在迁移命令中省略。我个人更喜欢在迁移文件中声明连接。

希望它有所帮助!


推荐阅读