2009-11-20 6 views
1

J'essaie d'obtenir Python 2.6 pour communiquer avec le serveur MySQL 5.1, sous Windows XP, mais je continue à avoir une étrange erreur, "SystemError: objet NULL passé à Py_BuildValue":Python/MySQL échoue sous Windows

>>> import MySQLdb as mysql 
>>> db = mysql.connect(user = "root", passwd="whatever", db="mysql", host="localh 
ost") 
>>> cu = db.cursor() 
>>> cu.execute("show tables") 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "C:\dirr\lib\site-packages\MySQLdb\cursors.py", line 173, in execu 
te 
    self.errorhandler(self, exc, value) 
    File "C:\ dirr\lib\site-packages\MySQLdb\connections.py", line 36, in de 
faulterrorhandler 
    raise errorclass, errorvalue 
SystemError: NULL object passed to Py_BuildValue 

Je pensais que c'était peut-être un problème de jeu de caractères, mais j'ai essayé de définir et de définir MySQL comme UTF-8, et cela n'a pas fait de différence.

Je suppose qu'il doit y avoir un problème avec python-mysql. Quelqu'un peut-il aider?


MISE À JOUR

OK, python-mysql sous windows est un peu un cauchemar, en particulier avec Python 2.6, il semble. Plutôt que d'installer python-mysql avec pip, utilisez plutôt this installer. Cela l'a réparé.

Répondre

1

Quelque chose ne va pas avec une partie MySQLdb écrit en C. Selon un message d'erreurs, il tente de passer NULL où pointeur vers l'objet est prévu. C'est probablement un bogue dans MySQLdb, sauf si vous utilisez une version cassée. Quelle version utilisez-vous? Essayez de télécharger la dernière version stable de MySQLdb exactement votre version de python et de le réinstaller. Essayez d'installer la version précédente. Et remplissez le rapport de bogue si la dernière version ne fonctionne pas.

This et this rapports sont probablement pertinents pour vous erreur. Selon eux, vous MySQL retourne une erreur qui déclenche un bogue dans MySQLdb. Malheureusement, il n'est pas si facile de découvrir ce qu'est cette erreur.

Questions connexes