1

Mysql データベースにテキスト ファイル経由でデータを挿入しようとすると、このエラーが発生します

1148: The used command is not allowed with this MySQL version

 ADOConnection._Execute(LOAD DATA LOCAL INFILE '/var/www/in2fonenew/inv/test.txt'
 INTO TABLE  tbl_transaction FIELDS TERMINATED BY '||' enclosed by '`..., false)

そして、この目的のためにクエリを以下に示します

$sql="LOAD DATA LOCAL INFILE '".$docroot."/inv/".$dbfile."' INTO TABLE 
tbl_transaction FIELDS TERMINATED BY '||' enclosed by '`' LINES TERMINATED
 BY '|||||' (field1,field2,field3,field4,field5,field6)";

ここで間違ったことをしましたか?

4

2 に答える 2

2

ソース: GitHub

「サーバーまたはクライアントで LOAD DATA LOCAL INFILE が無効になっている場合、そのようなステートメントを発行しようとするクライアントは、次のエラー メッセージを受け取ります: エラー 1148: 使用されたコマンドは、この MySQL バージョンでは許可されていません」

LOAD DATA LOCAL INFILE明示的に有効にする必要があります。

于 2013-01-15T05:19:12.953 に答える
2

MySQL 5.5 マニュアルページから:

LOCAL は、サーバーとクライアントの両方が許可するように構成されている場合にのみ機能します。たとえば、mysqld が --local-infile=0 で開始された場合、LOCAL は機能しません。セクション6.1.6「LOAD DATA LOCAL のセキュリティー問題」を参照してください。

オプションを設定する必要があります。

local-infile=1

my.cnf ファイルの [mysql] エントリに追加するか、 --local-infile オプションを使用して mysql クライアントを呼び出します

mysql --local-infile -uroot -pyourpwd yourdbname

「ローカル infile」機能のサーバー側を有効にするには、同じパラメーターが[mysqld]セクションにも定義されていることを確認する必要があります。

セキュリティ上の制限です。

于 2013-01-15T05:19:50.590 に答える