- Laravel Версия: 5.7.28
- Версия PHP: 7.2.15
- Драйвер базы данных и версия: MariaDB 10.2.23
Я борюсь с ошибкой на моем производственном сервере, используя Horizon.
ErrorException: Предупреждение: PDO :: prepare (): сервер MySQL удален
[внутренняя] в несериализации
Вы можете увидеть трассировку стека здесь: https://sentry.io/share/issue/b105b7946b524a9e841f56f44445ea14/
Насколько я могу судить, эта ошибка должна быть обнаружена фреймворком Laravel. Я не уверен, почему он не перехватывается и не превращается в QueryException, который затем вызывает переподключение и / или убивает работника.
См .: https://github.com/laravel/framework/blob/9fb420cc29a7dd5de5051f09c523ffc3ea01b969/src/Illuminate/Database/Connection.php#L663
А потом: https://github.com/laravel/framework/blob/9fb420cc29a7dd5de5051f09c523ffc3ea01b969/src/Illuminate/Database/Connection.php#L735
Насколько я понимаю, любое Исключение должно быть перехвачено и затем переброшено как Исключение Query, которое затем будет правильно перехвачено платформой и затем повторно подключено к базе данных.
Это случайная ошибка, поэтому ее трудно воспроизвести; Я пытался вручную выдать похожую ошибку, но она правильно перехватывается и обрабатывается.
Любое общее руководство о том, почему эта ошибка может быть разной в производстве, и идеи о том, как я могу ее выделить, будут оценены.