我有一个与 MySQL 数据库对话的旋风网络服务。当一段时间没有活动时(我猜超过 8 小时),我收到以下错误,直到我重新启动 Web 服务:
_mysql_exceptions.OperationalError: (2006, 'MySQL server has gone away')
我看过这篇关于 cp_reconnect 的帖子,我在创建连接池时已经实现了这个:
pool = adbapi.ConnectionPool("MySQLdb", host=self.host, user=self.user,
passwd=self.password, db=self.database, cursorclass=MySQLdb.cursors.DictCursor,
cp_reconnect=True)
我原以为这会修复它,而且似乎有一段时间了,但现在我在服务器上没有活动一段时间后再次看到“MySQL 服务器已消失”错误。
我已经阅读了有关 wait_timeout 的 MySQL 文档,我可以按照我想的方式修复它,但是为什么 cp_reconnect 功能对我不起作用?我将 adbapi 文档解释为如果您指定 cp_reconnect 参数,adbadpi 将处理 MySQL 发送的错误并为您重新尝试查询。所以基本上你不必直接在你的代码中处理错误。我误解了吗?