Laravel SQL Сервер SQLSTATE [08001] с несколькими базами данных - PullRequest
0 голосов
/ 21 февраля 2020

У меня установлен Laravel API, который запрашивает две разные базы данных на одном сервере. Мой .env выглядит следующим образом:

DB_CONNECTION=sqlsrv
DB_HOST=127.0.0.1
DB_PORT=1434
DB_DATABASE=database1
DB_USERNAME=**********
DB_PASSWORD=**********

DB_CONNECTION_SECOND=sqlsrv
DB_HOST_SECOND=127.0.0.1
DB_PORT_SECOND=1434
DB_DATABASE_SECOND=database2
DB_USERNAME_SECOND=***********
DB_PASSWORD_SECOND=***********

Мое приложение нормально обрабатывало несколько баз данных, но теперь выдаст мне следующую ошибку:

SQLSTATE[08001]: [Microsoft][ODBC Driver 13 for SQL Server]Client unable to establish connection because an error was encountered during handshakes before login. Common causes include client attempting to connect to an unsupported version of SQL Server, server too busy to accept new connections or a resource limitation (memory or maximum allowed connections) on the server. (SQL: select * from [categories] where [category_ID] = 1)

Странная вещь - это колебание, которое База данных дает мне ошибку. Например, я могу нажать http://api.mywebsite.net/api/database1/category/1 и получить данные обратно, но если я попытаюсь нажать http://api.mywebsite.net/api/database2/category/1, то есть другие данные, я получу эту ошибку. Если я немного подожду (обычно 3-5 минут) и попробую второй вызов, он будет go и все вызовы на маршруте /database2/ будут работать, но никакие вызовы на маршруте /database1/ не будут go и вместо этого даст мне эту ошибку сверху.

Я попытался выяснить, что стало причиной проблемы, и люди сказали, чтобы посмотреть максимально допустимый объем памяти для SQL Сервер, я считаю, что он установлен на 12 ГБ разрешенной памяти, что должно быть много, и я посмотрел на максимум одновременных подключений, и он установлен в 0 (без ограничений). Я действительно не уверен, что вызывает эту проблему и как go о ее устранении. Я могу предоставить более подробную информацию, если это необходимо, но эта проблема возникла неожиданно.

У сервера не было обновлений / перезапусков в течение короткого времени, и это не было проблемой сегодня утром и с тех пор стало проблемой.

РЕДАКТИРОВАТЬ добавление config/database.php

<?php

return [

    'fetch' => PDO::FETCH_OBJ,
    'default' => env('DB_CONNECTION', 'sqlsrv2'),
    'connections' => [

        'sqlite' => [
            'driver' => 'sqlite',
            'database' => env('DB_DATABASE', database_path('database.sqlite')),
            'prefix' => '',
        ],

        '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', ''),
            'charset' => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
        ],

        'pgsql' => [
            'driver' => 'pgsql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '5432'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8',
            'prefix' => '',
            'schema' => 'public',
            'sslmode' => 'prefer',
        ],
        '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' => 'sqlsrv',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST_SECOND', 'localhost'),
            'port' => env('DB_PORT_SECOND', '1433'),
            'database' => env('DB_DATABASE_SECOND', 'forge'),
            'username' => env('DB_USERNAME_SECOND', 'forge'),
            'password' => env('DB_PASSWORD_SECOND', ''),
            'charset' => 'utf8',
            'prefix' => '',
            'prefix_indexes' => true,
        ],

    ],

    'migrations' => 'migrations',

    'redis' => [

        'cluster' => false,

        'default' => [
            'host' => env('REDIS_HOST', '127.0.0.1'),
            'password' => env('REDIS_PASSWORD', null),
            'port' => env('REDIS_PORT', 6379),
            'database' => 0,
        ],

    ],

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