Laravel 8: ErrorException::("PDO::exec(): MySQL server has gone away") 调用时 DB::unprepared($sql)

Laravel 8: ErrorException::("PDO::exec(): MySQL server has gone away") when calling DB::unprepared($sql)

我运行一个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 gone away")

我在 Whosebug 中尝试了很多解决方案,例如: 1- 在 my.ini 中将 max_allowed_packet 最大化到 200M(没有用) 2- 在 php.ini 中将 max_execution_time 最大化到 300(无效)

我也搜索过,我有一个解决方案不确定是否有效,因为我不能 determine/apply 它是 mysql

的最大超时连接

感谢任何帮助!

我通过在[mysqld]下设置max_allowed_packet=200MB解决了my.ini 然后重启你的 mysql .

我在 [mysqldump] 下设置了 max_allowed_packet,这是 错误的


MySQL 转储:仅用于导出 sql。 MySQL:是 MySQL 客户端(或 mysql 守护程序),用于 运行 查询(在我的例子中插入这个大的 16 MB sql 文件)

参考这个服务器故障问题:difference between mysql and mysqldump