Jam*_*mie 5 python mysql apache mod-wsgi bottle
在使用以下方法访问我的Web应用程序之后:
- Python 2.7
- Bottle micro framework v.10.0.6
- Apache 2.2.22
- mod_wsgi
- 在Ubuntu Server 12.04 64bit上; 我在几个小时后收到此错误:
OperationalError: (2006, 'MySQL server has gone away')
Run Code Online (Sandbox Code Playgroud)
我正在使用MySQL - Python中包含的原生MySQL.它通常发生在我不访问服务器时.我尝试关闭所有连接,我这样做,使用这个:
cursor.close()
db.close()
Run Code Online (Sandbox Code Playgroud)
其中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
Run Code Online (Sandbox Code Playgroud)
它是默认配置文件,但max_allowed_packet为128M而不是16M.
对数据库的查询非常简单,最多可以检索大约100条记录.
谁能帮我解决这个问题?我有一个想法是使用try/except但我不确定这是否真的有效.
提前致谢,
杰米
更新:尝试/除了通话不起作用.
Tad*_*eck 25
这是MySQL错误,而不是Python的错误.
可能的原因和可能的解决方案列表如下:MySQL 5.5参考手册:C.5.2.9.MySQL服务器已经消失了.
可能的原因包括:
- 您尝试在关闭与服务器的连接后运行查询.这表示应该更正的应用程序中的逻辑错误.
- 在不同主机上运行的客户端应用程序没有从该主机连接到MySQL服务器的必要权限.
- 您在服务器端遇到超时,并且客户端中的自动重新连接被禁用(MYSQL结构中的重新连接标志等于0).
- 如果向服务器发送不正确或太大的查询,也可能会出现这些错误.如果mysqld收到的数据包太大或无序,则会假定客户端出现问题并关闭连接.如果需要大查询(例如,如果使用大型BLOB列),则可以通过设置服务器
max_allowed_packet变量来增加查询限制,该变量的默认值为1MB.您可能还需要增加客户端的最大数据包大小.有关设置数据包大小的更多信息,请参见第C.5.2.10节"数据包太大".- 如果您的客户端早于4.0.8并且您的服务器是4.0.8及更高版本,或者相反,如果您要发送16MB或更大的数据包,也会丢失连接.
- 等等...
换句话说,有很多可能的原因.浏览该列表并检查每个可能的原因.
| 归档时间: |
|
| 查看次数: |
20169 次 |
| 最近记录: |