Подтвердить что ты не робот

MySQL LOAD DATA LOCAL INFILE Python

Я запускаю Ubuntu 12.04 и MySQL 5.5 Итак, вот проблема:

Используя модуль MySQLDB для Python, команда SQL:

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

Не работает. Я получаю ERROR 1148: The used command is not allowed with this MySQL version

Я искал решение для этого какое-то время, и до сих пор кажется, что другие люди, имеющие одну и ту же проблему, исправили это, добавив "local-infile = 1" в "my.cnf" под [mysqld] и [mysql]. Это не сработало для меня, и я не уверен, почему.

Соответствующая ссылка:

MySQL: включить LOAD DATA LOCAL INFILE

4b9b3361

Ответ 1

Потратив часы на попытки всех настроек в конфигурационных файлах и перезагружая mysql десятки раз, я придумал это, что, кажется, решает проблему (не мог найти это нигде в документации)

MySQLdb.connect(server, username, password, database, local_infile = 1)

Ответ 2

Как я вижу, файл local-infile отсутствует. Но вы можете изменить это значение динамически в script.

Чтобы просмотреть эту опцию, запустите этот запрос -

SELECT @@global.local_infile;

Чтобы установить переменную, используйте этот оператор -

SET @@global.local_infile = 1;

Протестировано в консоли командной строки 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