У меня возникла проблема с подключением к моей локальной базе данных MySQL с использованием библиотеки Python MySQLdb. script работает хорошо ранее, но иногда я получаю ошибку MySQL в заголовке. Кажется, что нет объяснений, когда возникает ошибка, а script всегда запускается с той же машины с теми же аргументами.
Сервер MySQL работает как служба в Windows XP с пакетом обновления 3 (SP3) с использованием порта 3306 (работает локально размещенный phpMyAdmin), а script запускается из гостевой операционной системы Ubuntu 10.04 в Oracle VM VirtualBox.
В настоящее время я работаю над этой проблемой, открывая командную строку и выполняя "net stop MySQL", а затем "net start MySQL". Это позволяет мне запускать script несколько раз, прежде чем в результате возникнет ошибка, которую я исправил, перезапустив службу MySQL.
Поскольку я все еще вношу изменения в script, бывают случаи, когда script вызывает исключение и не выходит изящно, хотя я поймаю исключение и закрою курсор и соединение.
Код для подключения к базе данных:
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")