Laravel 8:调用 DB::unprepared($sql) 时出现 ErrorException::("PDO::exec(): MySQL server has gone away
Posted
技术标签:
【中文标题】Laravel 8:调用 DB::unprepared($sql) 时出现 ErrorException::("PDO::exec(): MySQL server has gone away")【英文标题】:Laravel 8: ErrorException::("PDO::exec(): MySQL server has gone away") when calling DB::unprepared($sql) 【发布时间】:2022-01-11 13:26:29 【问题描述】:我运行一个 laravel 播种机:
public function run()
$path = public_path('sql/cities.sql');
$sql = file_get_contents($path);
DB::unprepared($sql);
插入的 sql 文件非常大,它存储在 public/sql 中,它与来自 github 的这个文件相同(仅带有插入语句):Cities SQL File
当我运行播种机时,它会抛出这个错误:
D:\codes\laravel\arkanlabs_b2b\vendor\laravel\framework\src\Illuminate\Database\Connection.php:541 ErrorException::("PDO::exec(): mysql server has away")
我在 *** 中尝试了许多解决方案,例如: 1- 在 my.ini 中将 max_allowed_packet 最大化为 200M(不起作用) 2- 在 php.ini 中将 max_execution_time 最大化为 300(不起作用)
我也搜索过,我有一个解决方案不确定它是否有效,因为我无法确定/应用它来最大化 mysql 的连接超时
感谢任何帮助!
【问题讨论】:
【参考方案1】:我通过在 my.ini 中的 [mysqld] 下设置 max_allowed_packet=200MB 然后重新启动您的 mysql 来解决它。
我在 [mysqldump] 下设置了 max_allowed_packet,这是错误。
MySQL 转储:仅用于导出 sql。 MySQL:是 MySQL 客户端(或 mysql 守护程序),用于运行查询(在我的情况下插入这个 16 MB 的大 sql 文件)
参考这个服务器故障问题:difference between mysql and mysqldump
【讨论】:
以上是关于Laravel 8:调用 DB::unprepared($sql) 时出现 ErrorException::("PDO::exec(): MySQL server has gone away的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 8 的问题:在 null 上调用成员函数 count()
调用字符串上的成员函数 addEagerConstraints() - Laravel 8
未捕获的错误:将 laravel 5.8 升级到 8 后调用未定义的函数 Illuminate\Mail\TransportManager()