Как подключиться к Mysql из Lua с local-infile=1

Я подключаюсь к базе данных MySQL из lua, используя:

mysql = require "luasql.mysql"
local env = mysql.mysql()
local conn = env:connect(database,userName,password)

но опция local-infile не активирована, поэтому мои запросы, использующие LOAD DATA, не работают. Я пытался поставить линию

local-infile = 1

в файле my.cnf в поле [клиент], но он все еще не работает. К вашему сведению: я использую Linux и MySQL 5.1.

1 ответ

Я прошел через ту же ситуацию на прошлой неделе. Запрос LOAD DATA INFILE работал на Mac OSX, но я не мог заставить его работать на Ubuntu. Единственный способ заставить его работать - добавить одну строку кода в проект LuaSQL и перекомпилировать его.

Я использовал функцию драйвера MySQL mysql_options (вы можете проверить его прототип в mysql.h файл, вероятно, находится в /usr/include/mysql), чтобы включить local-infile, Вы можете проверить код в хранилище.

Чтобы скомпилировать и установить этот обходной путь, вы должны загрузить файлы:

$ wget https://github.com/rafaeldias/luasql/archive/master.zip
$ unzip master.zip

Чтобы скомпилировать и установить:

$ cd luasql-master/
$ make
$ sudo make install

Примечание. В зависимости от того, где расположены ваши папки Lua и MySQL, вам может потребоваться установить правильные значения для LUA_LIBDIR, LUA_DIR, LUA_INC, DRIVER_LIBS и DRIVER_INCS в config файл в папке LuaSQL.

Надеюсь, поможет.

Другие вопросы по тегам