加载数据本地infile在Ubuntu 12.04和MySQL中不起作用

时间:2012-12-23 12:43:01

标签: python mysql mysql-python

使用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。

1 个答案:

答案 0 :(得分:3)

不是真正的python问题......但问题的长短是由Ubuntu编译和分发的mysql> 12.04,不支持直接从mysql客户端使用load data local infile

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

  

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

     

使用FreeBSD端口的defalut安装,我不得不使用命令行   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行可能会更简单。