Laravel Horizon:ErrorException:警告:PDO::prepare():MySQL服务器已离开 Laravel版本:5.7.28 PHP版本:7.2.15 数据库驱动程序和版本:MariaDB 10.2.23

Laravel Horizon:ErrorException:警告:PDO::prepare():MySQL服务器已离开 Laravel版本:5.7.28 PHP版本:7.2.15 数据库驱动程序和版本:MariaDB 10.2.23,laravel,laravel-horizon,Laravel,Laravel Horizon,我正在使用Horizon解决生产服务器上的一个bug ErrorException:警告:PDO::prepare():MySQL服务器已离开 [内部]在非序列化中 您可以在此处看到错误的堆栈跟踪: 据我所知,这个错误应该被Laravel框架捕获。我不知道为什么它没有被捕获并变成QueryException,然后触发重新连接和/或杀死工人 见: 然后: 我的理解是,任何异常都应该被捕获,然后作为QueryException重新抛出,然后由框架正确捕获,然后重新连接到数据库 这是一个偶然的错误,因

我正在使用Horizon解决生产服务器上的一个bug

ErrorException:警告:PDO::prepare():MySQL服务器已离开 [内部]在非序列化中

您可以在此处看到错误的堆栈跟踪:

据我所知,这个错误应该被Laravel框架捕获。我不知道为什么它没有被捕获并变成QueryException,然后触发重新连接和/或杀死工人

见:

然后:

我的理解是,任何异常都应该被捕获,然后作为QueryException重新抛出,然后由框架正确捕获,然后重新连接到数据库

这是一个偶然的错误,因此很难重现;我试图手动抛出类似的错误,但它被正确捕获并得到正确处理


如果您能提供有关此错误在生产中可能不同的一般指导,以及如何隔离错误的想法,我们将不胜感激。

如果其他人遇到此问题,当前的理论是Sentry正在捕获框架仍在正确处理的错误

从本质上讲,作业仍然正确完成,因为MySQL连接错误由框架自动处理。然而,Sentry仍然在错误处理过程中捕捉到错误,尽管原因目前尚不清楚

有关参考信息,请参阅Github上的以下讨论:


如果其他人遇到这种情况,当前的理论是Sentry正在捕获框架仍在正确处理的错误

从本质上讲,作业仍然正确完成,因为MySQL连接错误由框架自动处理。然而,Sentry仍然在错误处理过程中捕捉到错误,尽管原因目前尚不清楚

有关参考信息,请参阅Github上的以下讨论: