mysql has gone away

今天使用mysql还原数据库时发生错误:mysql has gone away.

版本:mysql 5.0.22

并且发现在执行插入操作时产生了一些错误:ERROR 1406 (22001): Data too long for column 'name' at row 1

下面是解决方法:

1、在[mysqld]下添加:

max_allowed_packet = 20M

2、去掉sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"中的STRICT_TRANS_TABLES。

ok 重启mysql。

本文为Eliot原创,转载请注明出处:http://blog.csdn.net/xyw_blog/article/details/16018633

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"MySQL has gone away"错误通常发生在PHP脚本与MySQL服务器的连接意外中断时。这可能由于以下原因: 1. PHP会自动关闭无活动的数据库连接来节省资源,如果脚本执行时间过长,超出设置的超时限制(`max_execution_time`),可能会导致这个错误。 2. 数据库服务器关闭或重启也会触发此错误。 3. 一些网络问题也可能引发此问题。 要解决这个问题,可以尝试以下策略: 1. **延长超时时间**:在php.ini文件中增加`mysqli_connect_timeout`和`max_execution_time`的值,以允许更长的连接时间。 ```ini mysqli.connect_timeout = 60 max_execution_time = 300 ``` 2. **使用PDO with `setAttribute()`** 或者 `MYSQLI_OPT_RECONNECT`选项重新连接: ```php // 使用PDO $pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'password'); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); try { // 执行查询... } catch (PDOException $e) { if ($e->getCode() == 2006) { // MySQL has gone away echo "Reconnecting..."; // 重试连接 sleep(5); // 等待一段时间再试 $pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'password'); } // 处理错误... } // 或者使用mysqli $mysqli = new mysqli('localhost', 'username', 'password', 'test'); $mysqli->options(MYSQLI_OPT_RECONNECT, true); // ... ``` 3. **监控并及时关闭不再使用的连接**,确保不会因为长时间未使用的连接导致问题。 记得定期备份数据库,以防此类突发情况影响数据完整性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值