Mar 28
作者: 肖建彬 | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明
网址:http://www.xiaojb.com/archives/it/mydns_mysql_gone_away.shtml
网址:http://www.xiaojb.com/archives/it/mydns_mysql_gone_away.shtml
因为MySQL server的wait_timeout太短,导致了mydns工作不正常,经常丢失和服务器的连接。
和之前的vpopmail的patch一样,使用了mysql_ping,但是mysql 5.0.3之后,需要设置参数。修改就针对这些。
报错信息如下:
Mar 27 00:48:01 www214 mydns[18037]: www.5d6d.com.: error loading SOA: MySQL server has gone away (errno=111)
--- mydns-1.1.0.orig/src/lib/sql.c 2005-04-21 00:40:25.000000000 +0800
+++ mydns-1.1.0/src/lib/sql.c 2007-03-28 13:57:13.000000000 +0800
@@ -84,6 +84,9 @@
#if MYSQL_VERSION_ID > 32349
mysql_options(sql, MYSQL_READ_DEFAULT_GROUP, "client");
#endif
+#if MYSQL_VERSION_ID > 50012
+ mysql_options(sql, MYSQL_OPT_RECONNECT, "1");
+#endif
if (!(mysql_real_connect(sql, host, user, password, database, port, NULL, 0)))
ErrSQL(sql, _("Error connecting to MySQL server at %s"), host);
#endif
@@ -127,11 +130,16 @@
}
}
#else
+ if (!mysql_ping(sql))
+ return;
if (!(new_sql = mysql_init(NULL)))
return;
#if MYSQL_VERSION_ID > 32349
mysql_options(new_sql, MYSQL_READ_DEFAULT_GROUP, "client");
#endif
+#if MYSQL_VERSION_ID > 50012
+ mysql_options(sql, MYSQL_OPT_RECONNECT, "1");
+#endif
if (!(mysql_real_connect(new_sql, _sql_host, _sql_user, _sql_password, _sql_database, port, NULL, 0)))
{
mysql_close(new_sql);
April 14th, 2007 at 09:18
[...] 一个mysql_ping的问题,报告了好多地方,MyDNS,vpopmail,现在是php。 [...]