我在使用Python的MySQLdb库连接本地MySQL数据库时遇到问题。这个脚本以前运行得很好,但我偶尔会在标题中看到MySQL错误。似乎无法解释错误何时发生,而且脚本总是从具有相同参数的同一台计算机上运行。
MySQL服务器在Windows XP SP3上使用端口3306(本地托管的phpMyAdmin工作)作为服务运行,脚本从Oracle VM VirtualBox中的Ubuntu 10.04来宾操作系统运行。
我目前正在解决这个问题,方法是打开一个命令提示符,执行“net stop MySQL”,然后执行“net start MySQL”。这允许我在导致错误之前再次运行脚本几次,我已经通过重新启动MySQL服务修复了这个错误。
由于我仍在对脚本进行更改,有时脚本会引发异常,并且无法正常退出,尽管我确实捕获了异常并关闭了光标和连接。
连接到数据库的代码:def __init__(self):
try:
print "Connecting to the MySQL database..."
self.conn = MySQLdb.connect( host = "192.168.56.1",
user = "guestos",
passwd = "guestpw",
db = "testdb")
self.cursor = self.conn.cursor(MySQLdb.cursors.DictCursor)
print "MySQL Connection OK"
except MySQLdb.Error, e:
print "MySQLdb error %d: %s" % (e.args[0],e.args[1])
raise
发生这种情况时产生的完全错误如下:MySQLdb error 2013: Lost connection to MySQL server at 'reading initial communication packet', system error: 0
Traceback (most recent call last):
File "search.py", line 45, in
dataHandler = DataHandler()
File "/home/guestos_user/workspace/Search/src/data_handler.py", line 25, in __init__
db = "testdb")
File "/usr/lib/pymodules/python2.6/MySQLdb/__init__.py", line 81, in Connect
return Connection(*args, **kwargs)
File "/usr/lib/pymodules/python2.6/MySQLdb/connections.py", line 170, in __init__
super(Connection, self).__init__(*args, **kwargs2)
_mysql_exceptions.OperationalError: (2013, "Lost connection to MySQL server at 'reading initial communication packet', system error: 0")