Проверка Laravel «существует» не работает в конфигурации master-slave DB? - PullRequest
1 голос
/ 28 июня 2019

Я перемещаю проект в конфигурацию Master-Slave, и у меня возникла проблема, что проверка, связанная с БД, перестала работать для меня. Есть идеи, что мне не хватает?

так вот часть проверки:

$request->validate([
  'property_id' => 'required|exists:mysql.property,p_id',
  ... other validations not related to DB ...
], $error_messages);

файл config \ database.php:

'mysql' => [
    'driver' => 'mysql',

    'write' => [
        'host' => '196.168.56.211',
    ],
    'read' => [
        'host' => '192.168.56.222',
    ],
    'port' => '3306',
    'database' => 'project_db',
    'username' => 'db_user',
    'password' => 'pass123',
    'unix_socket' => env('DB_SOCKET'),

    'charset' => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix' => '',
    'strict' => false,
    'engine' => null,
    \PDO::ATTR_EMULATE_PREPARES => true,
],

вот что я получаю:

в файле \ vendor \ laravel \ framework \ src \ Illuminate \ Database \ Connection.php [663]:

catch (Exception $e) {
    throw new QueryException(
        $query, $this->prepareBindings($bindings), $e
    );
}

SQLSTATE [HY000] [2002] Попытка установить соединение была не удалось, так как требуемый ответ не был получен от другой компьютер в течение требуемого времени или уже установленный соединение было разорвано из-за неправильного ответа уже подключенный компьютер. (SQL: выберите количество (*) как агрегат из property, где p_id = 2444)

и это происходит, когда laravel пытается подключиться к базе данных «запись». Но из MySQL Workbench - подключение и редактирование записей в порядке.

есть идеи?

1 Ответ

0 голосов
/ 29 июня 2019

изменить вашу конфигурацию на

 'mysql' => [
    'write' => [
        'host' => '196.168.56.211'
    ],
    'read' => [
        'host' => '192.168.56.222',
    ],
    'sticky'    => true,
    'driver'    => 'mysql',
    'database'  => 'project_db',
    'username'  => 'db_user',
    'password'  => 'pass123',
    'charset' => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
],

Это гарантирует, что любые данные, записанные во время цикла запроса, могут быть немедленно прочитаны обратно из базы данных во время того же запроса

официальный документ читайте для получения дополнительной информации

...