Laravel 6 многократная проблема аутентификации базы данных - PullRequest
0 голосов
/ 25 января 2020

У меня есть два соединения с БД, как показано ниже:

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

DB_CONNECTION=sqlsrv
DB_HOST=192.168.102.11
DB_PORT=1433
DB_DATABASE=Some_Name
DB_USERNAME=XXXXXX
DB_PASSWORD=XXXXXX

Я аутентифицируюсь с помощью mysql и записал код, показанный ниже:

class User extends Authenticatable
{
    use Notifiable;
    protected $connection = 'mysql';

Все соединения с БД в порядке, но по-прежнему это требуется слишком много времени для входа. Это также не показывает никакого результата. Не могли бы вы помочь?

Ответы [ 2 ]

2 голосов
/ 25 января 2020

Поскольку ваше имя_конфигурации env db совпадает,

Кажется, laravel выбирает второе соединение, поэтому не может найти соединение mysql. Первое соединение покрывается вторым.

Измените другое имя ключа подключения на .env

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

DB_SRV_CONNECTION=sqlsrv
DB_SRV_HOST=Host_name
DB_SRV_PORT=1433
DB_SRV_DATABASE=DB_name
DB_SRV_USERNAME=user
DB_SRV_PASSWORD=password

В вашей конфигурации / базе данных. php

        'default' => env('DB_CONNECTION', 'mysql'),

        'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            ...
        ],
        'sql_srv' => [
            'driver' => 'sqlsrv',
            'host' => env('DB_SRV_HOST', '127.0.0.1'),
            'port' => env('DB_SRV_PORT', '3306'),

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

config('database.connections.mysql')

Если это все еще не работает, вы можете очистить кеш конфигурации:

php artisan config:clear
php artisan optimize
1 голос
/ 25 января 2020

Измените ваш .env файл на:

DB_CONNECTION=mysql

DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=sales_report
DB_USERNAME=root
DB_PASSWORD=

DB2_HOST=Host_name
DB2_PORT=1433
DB2_DATABASE=DB_name
DB2_USERNAME=user
DB2_PASSWORD=password

Затем в вашем config/database.php измените конфигурацию SQL сервера, чтобы использовать новые имена:

...
 'connections' => [
        // ... 
        'mysql' => [
            'driver' => 'mysql',
            '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'),
            ]) : [],
        ],       
        // ...
        'sqlsrv' => [
            'driver' => 'sqlsrv',

            'host' => env('DB2_HOST', 'localhost'),
            'port' => env('DB2_PORT', '1433'),
            'database' => env('DB2_DATABASE', 'forge'),
            'username' => env('DB2_USERNAME', 'forge'),
            'password' => env('DB2_PASSWORD', ''),
            'charset' => 'utf8',
            'prefix' => '',
            'prefix_indexes' => true,
        ],

    ],
...

Делая это установит базу данных по умолчанию на mysql, но вы можете использовать альтернативное соединение в каждой модели или в построителе запросов:

class User extends Authenticatable
{
    use Notifiable;
    protected $connection = 'sqlsrv';

или

DB::connection('sqlsrv')->table('users')->...

. изменив запись DB_CONNECTION в файле .env, но затем вам необходимо переопределить соединение на mysql там, где это необходимо.

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