2

MySQL を使用すると、ロード データ ローカル インファイルを使用してファイルをインポートできません。私のサーバーは AWS RDS 上にあります。これは Ubuntu 10.04 で動作します。を使用してクライアントをインストールしましたapt-get install mysql-client。Python で mysqldb または mysql.connector を使用すると、同じエラーが発生します。

  File "/usr/lib/pymodules/python2.7/mysql/connector/protocol.py", line 479, in cmd_query
    return self.handle_cmd_result(self.conn.recv())
  File "/usr/lib/pymodules/python2.7/mysql/connector/connection.py", line 179, in recv_plain
    errors.raise_error(buf)
  File "/usr/lib/pymodules/python2.7/mysql/connector/errors.py", line 82, in raise_error
    raise get_mysql_exception(errno,errmsg)
mysql.connector.errors.NotSupportedError: 1148: The used command is not allowed with this MySQL version

アップロードするデータがたくさんあります... 12.04 がサポートされておらず、12.04 を使用しなければならないなんて信じられません。

4

1 に答える 1

3

実際にはpythonの質問ではありません...しかし、問題の大小は、Ubuntu> 12.04によってコンパイルおよび配布されload data local infileたmysqlは、mysqlクライアントからそのまま直接使用することをサポートしていないということです。

MySQL リファレンス ドキュメントでエラー 1148 を検索すると、上記のリンク先のページのさらに下のコメントに次のように表示されます。

Aaron Peterson によって 2005 年 11 月 9 日午後 4 時 35 分に投稿されました。

FreeBSD ポートからのデフォルト インストールでは、コマンド ライン mysql -u user -p --local-infile menagerie を使用して mysql モニターを起動する必要がありました。そうしないと、LOAD DATA LOCAL コマンドが次のようなエラーで失敗しました。

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

...これ機能します。

monte@oobun2:~$ mysql -h localhost -u monte -p monte --local-infile
Enter password: 

...

mysql> LOAD DATA LOCAL INFILE 'pet.txt' INTO TABLE pet;
Query OK, 8 rows affected (0.04 sec)
Records: 8  Deleted: 0  Skipped: 0  Warnings: 0

mysql> SELECT * FROM pet;
+----------+--------+---------+------+------------+------------+
| name     | owner  | species | sex  | birth      | death      |
+----------+--------+---------+------+------------+------------+
| Fluffy   | Harold | cat     | f    | 1993-02-04 | NULL       |
| Claws    | Gwen   | cat     | m    | 1994-03-17 | NULL       |
| Buffy    | Harold | dog     | f    | 1989-05-13 | NULL       |
| Fang     | Benny  | dog     | m    | 1990-08-27 | NULL       |
| Bowser   | Diane  | dog     | m    | 1979-08-31 | 1995-07-29 |
| Chirpy   | Gwen   | bird    | f    | 1998-09-11 | NULL       |
| Whistler | Gwen   | bird    | NULL | 1997-12-09 | NULL       |
| Slim     | Benny  | snake   | m    | 1996-04-29 | NULL       |
| Puffball | Diane  | hamster | f    | 1999-03-30 | NULL       |
+----------+--------+---------+------+------------+------------+
9 rows in set (0.00 sec)

mysql>

通常、コードを介してデータをロードする必要はないので、それで十分です。そうであり、mysql 構成ファイルを編集する能力/権限がある場合はlocal-infile=1、適切なセクションの行がより単純になる可能性があります。

于 2012-12-23T14:51:32.643 に答える