3

私の知る限り、問題なく MySQL Connector/Python (v1.2.3) モジュールをインストールしました。これは、Python 2.7.7 を使用する CentOS 5.4 上にあります (Anaconda ディストリビューションですが、バニラ インストールでも同じことが起こります)。それをインポートして、MySQL サーバー (v4.1.20) との接続を初期化できます。このサーバーは、ローカルではなく LAN 経由でアクセスされます。メソッドは、is_connected()適切に接続されていることをアサートします

>>> import mysql.connector 
>>> cnx = mysql.connector.connect(<MySQL database information here>) 
>>> cursor = cnx.cursor()
>>> cnx.is_connected() 
True 

ただし、SQL クエリを実行しようとすると、カーソル コマンドを介して直接 (例: cursor.execute("SELECT DATABASE();"))、または mysql.connector メソッドを介して間接的に (例: get_database())、次のような同じエラーが発生します。

>>> cnx.get_database() 
Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
File "/home/bgrande/software/genesis/anaconda-2.0.1/lib/python2.7/site-packages/mysql/connector/connection.py", line 1200, in get_database 
return self._info_query("SELECT DATABASE()")[0] 
File "/home/bgrande/software/genesis/anaconda-2.0.1/lib/python2.7/site-packages/mysql/connector/connection.py", line 1434, in _info_query 
cursor.execute(query) 
File "/home/bgrande/software/genesis/anaconda-2.0.1/lib/python2.7/site-packages/mysql/connector/cursor.py", line 494, in execute 
self._handle_result(self._connection.cmd_query(stmt)) 
File "/home/bgrande/software/genesis/anaconda-2.0.1/lib/python2.7/site-packages/mysql/connector/connection.py", line 683, in cmd_query 
statement)) 
File "/home/bgrande/software/genesis/anaconda-2.0.1/lib/python2.7/site-packages/mysql/connector/connection.py", line 612, in _handle_result 
eof = self._handle_eof(self._socket.recv()) 
File "/home/bgrande/software/genesis/anaconda-2.0.1/lib/python2.7/site-packages/mysql/connector/connection.py", line 554, in _handle_eof 
eof = self._protocol.parse_eof(packet) 
File "/home/bgrande/software/genesis/anaconda-2.0.1/lib/python2.7/site-packages/mysql/connector/protocol.py", line 252, in parse_eof 
raise errors.InterfaceError(err_msg) 
mysql.connector.errors.InterfaceError: Failed parsing EOF packet. 

この後、MySQL サーバーとの接続が失われたようです。もう一度実行しようとするとget_database()、次のエラーが返されます。

>>> cnx.get_database() 
Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
File "/home/bgrande/software/genesis/anaconda-2.0.1/lib/python2.7/site-packages/mysql/connector/connection.py", line 1200, in get_database 
return self._info_query("SELECT DATABASE()")[0] 
File "/home/bgrande/software/genesis/anaconda-2.0.1/lib/python2.7/site-packages/mysql/connector/connection.py", line 1433, in _info_query 
cursor = self.cursor(buffered=True) 
File "/home/bgrande/software/genesis/anaconda-2.0.1/lib/python2.7/site-packages/mysql/connector/connection.py", line 1328, in cursor 
raise errors.OperationalError("MySQL Connection not available.") 
mysql.connector.errors.OperationalError: MySQL Connection not available. 

これはis_connected()メソッドによって確認されます。

>>> cnx.is_connected() 
False

さらに、同様の設定 (CentOS 5.5; Python 2.7.6) を備えたこの LAN 上の別のコンピューターで、MySQLdb モジュールを使用してデータベースと対話することに成功したことにも言及する必要があります。それでも、mysql.connector モジュールを使用したまったく同じ Python インストールはできません (同じエラーのため)。ここに記載されている最初のコンピューターに MySQLdb をインストールしようとしましたが、問題が発生しました。MySQL Connector/Python の方がはるかに簡単に機能すると思いました。

私の環境にもよると思いますので再現は難しいと思います。それにもかかわらず、問題がどこにあるのかを絞り込むために実行できる手順についての指針をいただければ幸いです。ありがとう!

4

0 に答える 0