MySQL LOAD DATA LOCAL INFILE Python

use*_*082 22 python mysql

我正在运行Ubuntu 12.04和MySQL 5.5好吧所以这是问题所在:

使用MySQL的MySQLDB模块,SQL命令:

cursor.execute("LOAD DATA LOCAL INFILE 'example.csv' INTO TABLE 'example_mysql_table' TERMINATED BY ',';")
Run Code Online (Sandbox Code Playgroud)

不行.我明白了ERROR 1148: The used command is not allowed with this MySQL version

我已经寻找了一段时间的解决方案,到目前为止,似乎其他有同样问题的人通过在[mysqld]和[mysql]下面的'my.cnf'添加"local-infile = 1"来修复它].这对我没用,我不知道为什么.

相关链接:

MySQL:启用LOAD DATA LOCAL INFILE

小智 66

花了好几个小时在配置文件中尝试各种设置并重启mysql几十次我想出了这个似乎解决了这个问题(在任何文档中都找不到这个)

MySQLdb.connect(server, username, password, database, local_infile = 1)
Run Code Online (Sandbox Code Playgroud)


Dev*_*art 4

正如我所见,没有文件选项local-infile。但您可以在脚本中动态更改此值。

要查看此选项,请运行此查询 -

SELECT @@global.local_infile;
Run Code Online (Sandbox Code Playgroud)

要设置变量,请使用此语句 -

SET @@global.local_infile = 1;
Run Code Online (Sandbox Code Playgroud)

在MySQL命令行控制台测试,一切正常:

SET @@GLOBAL.local_infile = 1;
LOAD DATA LOCAL INFILE 'test.csv' INTO TABLE table1;
Query OK, 3 rows affected (0.06 sec)

SET @@GLOBAL.local_infile = 0;
LOAD DATA LOCAL INFILE 'test.csv' INTO TABLE table1;
ERROR 1148 (42000): The used command is not allowed with this MySQL version
Run Code Online (Sandbox Code Playgroud)