0

私はPyMySQL-0.5.0を使用しており、ファイルからリモートの MySQL インスタンスにデータをロードするときに、あいまいなエラー/例外に直面しています。「load data local infile ...」ステートメントを実行すると、次のような例外が表示されますThe used command is not allowed with this MySQL version

この操作がPyMySQLでサポートされているかどうか(および/またはこれが他のバージョンでサポートされているかどうか)の手がかり

PS:

1) エラーの詳細:

2012-05-17 11:05:24,524 - 8988 - DEBUG - Loading table table_2012_05_16 
from file: /path/to/data/file_2012-05-16
2012-05-17 11:05:24,524 - 8988 - DEBUG - Executing update: load data local 
infile '/path/to/data/file_2012-05-16' into table table_2012_05_16(@dummy, c1, 
c2, c3, c4, c5, c6, c7);
2012-05-17 11:05:24,528 - 8988 - ERROR - Exception while executing update: 
<class 'pymysql.err.InternalError'> - (1148, u'The used command is not allowed 
with this MySQL version')

2) 「load data local infile...」サポート/構文に関する MySQL ドキュメント。

3)mysqlクライアントを使用すると、このデータロードは正常に機能します(つまり、私見では、このロードに対する障害-許可、特権、所有物-はありません):

load_machine:~$ mysql -htarget_machine.baz -ufoo -pbar db -e "load data local 
infile '/path/to/data/file_2012-05-16' into table table_2012_05_16(@dummy, c1, 
c2, c3, c4, c5, c6, c7)"

load_machine: ~$ mysql -htarget_machine.baz -ufoo -pbar db -e "select count(*) 
from table_2012_05_16;"
+----------+
| count(*) |
+----------+
| 38563191 |
+----------+
4

3 に答える 3

8

PYMySQL はサポートしてLOAD DATA LOCAL INFILEいますが、データベース接続パラメーターで有効にする必要があります。例:

connection = pymysql.connect(host='localhost', user='username', password='password', database='databasename', charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor, local_infile=True)

デフォルトは に設定されていFalseます。

于 2016-11-15T22:24:06.940 に答える
3

PyMySQLLOAD DATA LOCAL INFILEはバージョン 0.6.4 以降でサポートされています

于 2015-07-27T18:44:42.093 に答える
2

マニュアルから:

LOAD DATA LOCALサーバーまたはクライアントで が無効になっている場合、そのようなステートメントを発行しようとするクライアントは、次のエラー メッセージを受け取ります。

エラー 1148: 使用されたコマンドは、この MySQL バージョンでは許可されていません

PyMySQL はまだサポートしていませんLOAD DATA LOCALバグトラッカーでは 10 か月以上にわたって中程度の優先度の欠陥であり、修正する担当者はまだ割り当てられておらず、マイルストーンも設定されていません。

代わりに Python の MySQLdb を使用して実行する方法については、この回答を参照してください。LOAD DATA LOCAL

于 2012-05-17T15:53:07.137 に答える