我正在尝试执行以下操作,但不断得到"MySQL服务器已消失">
- 从 informix 数据库中读取大约 100,000 行(每行大约 400 个字符(。这没有问题
- 将 100,000 行插入到共享主机帐户上托管的 MySQL 表中
我收到"MySQL 服务器已消失",然后更新了我的INSERT
以使用一个INSERT command
例如:$queryMySQL = INSERT into table (field1, field2, field3,...) values ('A', '2017-02-01', ..), ('B', '2017-02-01', ..), ('C', '2017-02-01', ...),...'
这不起作用,所以我尝试打开持久连接 ini_set('mysqli.reconnect', 'on')
;和$db_mysqli = new mysqli('p:'.$host, $Username,$Pswd,$database);
这没有帮助,所以我尝试插入 50,000 而不是 100,000(我不想这样做(,但仍然得到MySQL server has gone away
由于这是一个共享的主机帐户,因此我无法访问php.ini
,也无权mysql.cnf
有什么建议吗?
为什么会发生
如果向服务器发送查询,也会收到这些错误 不正确或太大。如果 mysqld 得到的数据包太大。 或者乱序,它假设 客户端并关闭连接。
可以做什么
避免此问题的简单方法是确保 max_allowed_packet在 mysqld 服务器中设置的比在 客户端,并且所有客户端都使用相同的值 max_allowed_packet。
你能做什么??
由于您已经在使用主机,请咨询托管支持以解决此问题。好吧,如果他们不能,您可以减小查询大小,请减小它,如果它不能解决您的问题,请尝试更改主机。
MYSQL 参考