2

使用 MySQL 我无法使用加载数据本地 infile 导入文件。我的服务器在 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编译和分发的mysql不支持load data local infile直接从mysql客户端使用。

如果您在 MySQL 参考文档中搜索错误 1148,请在上面链接的页面下方的评论中:

Aaron Peterson 于 2005 年 11 月 9 日下午 4:35 发布

使用 FreeBSD 端口的默认安装,我必须使用命令行 mysql -u user -p --local-infile menagerie 来启动 mysql 监视器,否则 LOAD DATA LOCAL 命令失败并出现如下错误:

ERROR 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 回答