gpt4 book ai didi

Python mysqldb 错误关闭连接

转载 作者:太空狗 更新时间:2023-10-29 21:08:43 32 4
gpt4 key购买 nike

关闭连接时出现如下问题:

   database = 'sed_database'   
conn = MySQLdb.Connect(host='remote_host', user='default',
passwd='pass', db=database)
try:
try:
cursor = conn.cursor()
cursor.execute(sql_str)
results = cursor.fetchall()
except MySQLdb.Error, e:
print "MySQL/Server Error using query: %s" % sql_str
print "Using database: %s" % database
raise e
finally:
if cursor:
cursor.close()
if conn:
conn.close()

这给出:

 Traceback (most recent call last):
File "trass.py", line 579, in ?
main(sys.argv)
File "trass.py", line 555, in main
old_rows, changes_list = auto_analyse_test(f, args.build, args.quiet, args.debug)
File "trass.py", line 352, in auto_analyse_test
last_analysed_build = get_sed_baseline_ref(test_file_name, old_delivery_stream)
File "trass.py", line 151, in get_sed_baseline_ref
results = execute_sql_query(sql, delivery_stream)
File "trass.py", line 197, in execute_sql_query
passwd='pass', db=database)
File "C:\Python24\Lib\site-packages\MySQLdb\__init__.py", line 75, in Connect
return Connection(*args, **kwargs)
File "C:\Python24\Lib\site-packages\MySQLdb\connections.py", line 164, in __init__
super(Connection, self).__init__(*args, **kwargs2)
_mysql_exceptions.InternalError: (3, "Error writing file 'D:\\MySQL_Datafiles\\Logfiles\\query.
log' (Errcode: 9)")

Python的MySQLDB库信息如下:

>>> print MySQLdb.get_client_info()
4.1.18
>>> print MySQLdb.__version__
1.2.1_p2
>>> print MySQLdb.__revision__
410

奇怪的是:

  • 我已经检查了服务器,query.log 存在并且正在被其他进程写入。
  • 此代码通过多次迭代工作,然后在特定项目上失败。
  • 确切的查询通过 SQLyog 运行良好,并产生四个结果。

服务器 error.log 显示“中止连接...(读取通信数据包时出错)”

虽然 Traceback 似乎显示与连接创建相关的错误,但直到连接关闭(或函数结束,我猜默认情况下它会关闭)才会发生。我试过在打开和关闭之间放置额外的输出或暂停。每次关闭时发生异常。那么什么会导致关闭连接时出现此错误?

最佳答案

这是我目前的发现。

似乎在粘贴代码的第 2 行 MySQLdb.Connect(...) 打开连接时触发错误,而不是在关闭连接时触发。

完整回溯:

  • ...
  • execute_sql_query [操作]
  • MySQLdb 连接 [操作]
  • MySQLdb super(...) [操作]
  • _mysql.c ConnectionObject_Initialize [底层pyhon模块,C语言编写]
  • libmysql mysql_real_connect 或 mysql_options [可能是较早的]
  • 失败,设置异常

让我们解码异常

InternalError:
(3,
"Error writing file 'D:\\MySQL_Datafiles\\Logfiles\\query.log'
(Errcode: 9)")
  • “3”旧 mysql mysys_err.h EE_WRITE 3
  • “query.log”,这是本地还是远程日志文件?似乎是 Windows 路径。
  • “错误代码:9”假设是 Windows(以上),即 ERROR_INVALID_BLOCK“存储控制 block 地址无效。”相当神秘,但它会去检查这个文件是否存在,它是否可写,以及它是否可能受到 logrotate 或类似的影响。检查磁盘空间,最好也进行磁盘检查。

这似乎是客户端错误。请检查您的客户端 my.cnf[client] 部分。

source code for given MySQLdb version

关于Python mysqldb 错误关闭连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20565874/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com