Как подключиться к 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.
Надеюсь, поможет.