6

使用以下方式访问我的网络应用程序后:
- Python 2.7
- Bottle 微框架 v. 0.10.6
- Apache 2.2.22
- mod_wsgi
- 在 Ubuntu Server 12.04 64 位上;几个小时后我收到此错误:

OperationalError: (2006, 'MySQL server has gone away')

我正在使用 MySQL——Python 中包含的原生 MySQL。它通常发生在我不访问服务器时。我尝试使用以下方法关闭所有连接:

cursor.close()
db.close()

其中 db 是标准的 MySQLdb.Connection() 调用。

my.cnf 文件如下所示:

key_buffer      = 16M
max_allowed_packet  = 128M
thread_stack        = 192K
thread_cache_size       = 8
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover         = BACKUP
#max_connections        = 100
#table_cache            = 64
#thread_concurrency     = 10

它是默认配置文件,除了 max_allowed_pa​​cket 是 128M 而不是 16M。

对数据库的查询非常简单,最多检索大约 100 条记录。

谁能帮我解决这个问题?我确实有一个想法是使用 try/except 但我不确定这是否真的有效。

提前致谢,

杰米

更新:try/except 调用不起作用。

4

4 回答 4

25
于 2012-09-16T03:40:12.593 回答
0

此处发布了一个(非常相关的)问题的答案:https ://stackoverflow.com/a/982873/209532

它与 MySQLdb 驱动程序(MySQL-python(未维护)和 mysqlclient(已维护 fork))直接相关,但方法与不支持自动重新连接的其他驱动程序相同。

于 2018-02-21T09:41:35.487 回答
0

确保您没有尝试提交已关闭的 MySqldb 对象

于 2017-01-17T16:52:36.343 回答
-3

对我来说,这是使用

MySQLdb.connect("127.0.0.1","root","","db" )

代替

MySQLdb.connect("localhost","root","","db" )

接着

df.to_sql('df',sql_cnxn,flavor='mysql',if_exists='replace', chunksize=100)
于 2016-07-18T03:49:09.823 回答