我在使用 Python 的 MySQLdb 库连接到本地 MySQL 数据库时遇到问题。该脚本之前一直运行良好,但我偶尔会在标题中收到 MySQL 错误。似乎没有解释何时发生错误,并且脚本始终从具有相同参数的同一台机器上运行。
MySQL 服务器在 Windows XP SP3 上作为服务运行,使用端口 3306(本地托管的 phpMyAdmin 工作),脚本从 Oracle VM VirtualBox 中的 Ubuntu 10.04 guest 操作系统运行。
我目前正在通过打开命令提示符并执行“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 <module>
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")
最佳答案
sudo vi /etc/mysql/my.cnf
删除
bind-address = 127.0.0.1
然后
sudo reboot now
就是这样。请注意,这会使您的 mysql 服务器在暴露时降低安全性。
关于python - MySQL 错误 : 2013, "Lost connection to MySQL server at ' 读取初始通信包',系统错误:0",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3578147/