登录 用户中心() [退出] 后台管理 注册
   
您的位置: 首页 >> 程序员学前班[不再更新,只读] >> 主题: [mysql/c++]MySQL server has gone away.发生的原因     [回主站]     [分站链接]
标题
[mysql/c++]MySQL server has gone away.发生的原因
clq
浏览(1) + 2008-05-21 13:11:43 发表 编辑

关键字:

[mysql/c++]MySQL server has gone away.发生的原因

1.连接服务器时失败了,但仍然执行查询.

2.服务器断开了.

3.发送的包超过 16 M.

http://dev.mysql.com/doc/refman/5.0/en/gone-away.html

clq
2008-5-21 13:14:29 发表 编辑

http://mclee.foolme.net/2007/01/mysql-server-has-gone-away.html
--------------------------------------------------

"MySQL server has gone away."

通常MySQL C API回传这个error message的时候都是MySQL server crash,或是有什么nasty的事情发生了。 但是如果MySQL server好端端的没事的话呢?

MySQL C client API,在5.0.3以前,会设定一个reconnect flag,如果被server timeout或是disconnect,那么在issue query以前会自己reconnect。 所以如果你用旧版的程式,在新版的API (newer than 5.0.3)上面compile,那么可能就会爆了这么一下;因为新版里面这个flag是设成0,当client被server disconnect或是timeout的时候,再要下query的话,就会发现server不见了...

要从client code解这个问题的话,5.0.13以后的API版本,可以设定让他吃MYSQL_OPT_RECONNECT来解决。

For example,

mysql_init(&mysql);
mysql_options(&mysql, MYSQL_OPT_RECONNECT, "1");
mysql_real_connect("blahblah");

就可以了。 这个故事告诉我们...升级以后, 文件一定要记得看-_-

Reference:
mysql_options()
mysql_real_connect()

--------------------------------------------------
其实设定了这个标志也没用,还是要在程序中自己重连.

clq
2008-7-9 14:13:57 发表 编辑

经过多"年"测试,确认是 mysql 没有及时释放已经断开的连接引进的,比较奇怪的是 4.0 版本好象没有这个问题,问题基本上是出在 5.0 版本安装在我的 windows 2003 上出的问题,现在改为使用 5.1 的稳定版本,这种情况就大大减少了.当然了程序中还是应该用连接池,象我这样会一个连接执行完马上就关也是有点不太好 :)
clq
2010-3-2 10:50:23 发表 编辑

4036

总数:3 页次:1/1 首页 尾页  
总数:3 页次:1/1 首页 尾页  


所在合集/目录



发表评论:
文本/html模式切换 插入图片 文本/html模式切换


附件:



NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.

Copyright © 2005-2020 clq, All Rights Reserved
版权所有
桂ICP备15002303号-1