0

Pour commencer, je me suis rendu compte que cette question a été posée before, mais aucune résolution n'a jamais été atteinte. En espérant que deux ans pourraient faire une différence dans la compréhension du problème.MySQL Connector/Python InterfaceError: "Échec d'analyse du paquet EOF" uniquement sur un hôte spécifique

Je suis en train de résoudre un problème où je vois cette erreur mysql.connector.errors.InterfaceError: Failed parsing EOF packet.

Voici la chaîne complète:

Python 2.7.10 (default, Oct 23 2015, 19:19:21) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import mysql.connector as connector 
>>> sql = connector.connect(host='remote_host', user='user', password='pw', database='db') 
>>> cursor = sql.cursor() 
>>> sql.is_connected() 
True 
>>> cursor.execute("select * from associations") 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/Library/Python/2.7/site-packages/mysql/connector/cursor.py", line 515, in execute 
    self._handle_result(self._connection.cmd_query(stmt)) 
    File "/Library/Python/2.7/site-packages/mysql/connector/connection.py", line 488, in cmd_query 
    result = self._handle_result(self._send_cmd(ServerCmd.QUERY, query)) 
    File "/Library/Python/2.7/site-packages/mysql/connector/connection.py", line 407, in _handle_result 
    eof = self._handle_eof(self._socket.recv()) 
    File "/Library/Python/2.7/site-packages/mysql/connector/connection.py", line 344, in _handle_eof 
    eof = self._protocol.parse_eof(packet) 
    File "/Library/Python/2.7/site-packages/mysql/connector/protocol.py", line 269, in parse_eof 
    raise errors.InterfaceError(err_msg) 
mysql.connector.errors.InterfaceError: Failed parsing EOF packet. 

Ce qui est étrange est que j'ai aussi une base de données locale mis en place avec exactement la même structure, avec les mêmes informations, et courir à travers la même chaîne de commandes fonctionne très bien. Ma version de serveur local est 5.7.12 MySQL Community Server (GPL) alors que le serveur distant auquel j'essaie de me connecter est 4.1.22-log.

A partir du manuel Python/connecteur:

Connector/Python does not support the old MySQL Server authentication methods, which means that MySQL versions prior to 4.1 will not work.

Est-ce que "avant" inclure ou exclure 4.1? Si elle exclut, des idées de ce qui pourrait aller mal?

Répondre

0

Jamais trouvé une solution à cela pour mysql.connector, mais j'ai trouvé un connecteur différent - PyMySQL, qui a fonctionné parfaitement. N'a même pas besoin de changer la syntaxe.