Laravel 6 - 2-я база данных настроена в базе данных. php, но все еще получена Соединение с базой данных [] не настроено - PullRequest
0 голосов
/ 29 марта 2020

Я хочу создать вторую базу данных для резервного копирования. Я следил за другим решением SO и другими веб-сайтами, которые ведут к тому же самому. Я добавил новое соединение с БД в .env и настроил его в базе данных. php, очистил кеш с помощью php artisan config:cache. Когда я пытаюсь выполнить миграцию с использованием php artisan migrate --database=backup_literature_review_management, появляется сообщение InvalidArgumentException, соединение с базой данных [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

Попытка перехода на 2-ю БД

php artisan migrate --database="backup_literature_review_management"

Ошибка

InvalidArgumentException, подключение к базе данных [backup_literature_review_management] не настроено.

1 Ответ

3 голосов
/ 29 марта 2020

Вы звоните не по адресу. Используйте это:

php artisan migrate --database="mysql2"

Вы также можете определить соединение внутри файла миграции, например:

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

С помощью этой последней команды вы можете пропустить --database="mysql2 в команде миграции. Лично я предпочитаю объявить соединение внутри файла миграции.

Надеюсь, это помогло!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...