Уже неделю не могу заставить qlua скрипт хотя бы загрузить библиотеку для БД mySQL. Подключаю библиотеку так:
Код
require "luasql.mysql"
Сами файлы библиотеки находится в папке с программой QUIK по пути c:\QuikFinam\luasql\ В этой папке 2 файла libmysql.dll и mysql.dll , которые я взял с ЭТОЙ страницы. При запуске скрипта QUIK выдает ошибку:
Код
error loading module 'luasql.mysql' from file 'C:\QuikFinam\luasql\mysql.dll':
Не найден указанный модуль.
Сам LUA я поставил вот от сюда (не знаю нужно это или нет). Эту тему смотрел - ответа на мой вопрос там не нашел. Чувствую, что библиотеки для mySQL я взял какие-то не правильные. А где взять правильные не знаю.
Может кто-нибудь поделится своими библиотеками для mySQL или подскажите где их взять рабочие. Устанавливать дополнительно ещё что-нибудь нужно? Заранее всем спасибо.
Антон Кыт. написал: Тогда, наверное, надо писать? require "luasql\luasql.mysql"
Нет. В этом случае QUIK выдает вот такую ошибку:
Код
module 'luasqlluasql.mysql' not found:
no field package.preload['luasqlluasql.mysql']
no file '.\luasqlluasql\mysql.lua'
no file 'C:\QuikFinam\lua\luasqlluasql\mysql.lua'
no file 'C:\QuikFinam\lua\luasqlluasql\mysql\init.lua'
no file 'C:\QuikFinam\luasqlluasql\mysql.lua'
no file 'C:\QuikFinam\luasqlluasql\mysql\init.lua'
no file 'C:\Program Files (x86)\Lua\5.1\lua\luasqlluasql\mysql.luac'
no file 'C:\QuikFinam\Include\luasqlluasql\mysql.dll'
no file 'C:\QuikFinam\Include\luasqlluasql\mysql.lua'
no file 'C:\QuikFinam\Include\luasqlluasql\mysql.luac'
no file '.\luasqlluasql\mysql.dll'
no file 'C:\QuikFinam\luasqlluasql\mysql.dll'
no file 'C:\QuikFinam\loadall.dll'
no file 'C:\QuikFinam\Include\luasqlluasql.dll'
no file 'C:\QuikFinam\Include\luasqlluasql.lua'
no file 'C:\QuikFinam\Include\luasqlluasql.luac'
no file '.\luasqlluasql.dll'
Вообщем, получается, что если я пишу
Код
require "luasql.mysql"
то QUIK видит файл c:\QuikFinam\luasql\mysql.dll , но загрузить его не может, или другого какого-то файла не хватает.
module 'c:\QuikFinam\luasql\mysql' not found:
no field package.preload['c:\QuikFinam\luasql\mysql']
no file '.\c:\QuikFinam\luasql\mysql.lua'
no file 'C:\QuikFinam\lua\c:\QuikFinam\luasql\mysql.lua'
no file 'C:\QuikFinam\lua\c:\QuikFinam\luasql\mysql\init.lua'
no file 'C:\QuikFinam\c:\QuikFinam\luasql\mysql.lua'
no file 'C:\QuikFinam\c:\QuikFinam\luasql\mysql\init.lua'
no file 'C:\Program Files (x86)\Lua\5.1\lua\c:\QuikFinam\luasql\mysql.luac'
no file 'C:\QuikFinam\Include\c:\QuikFinam\luasql\mysql.dll'
no file 'C:\QuikFinam\Include\c:\QuikFinam\luasql\mysql.lua'
no file 'C:\QuikFinam\Include\c:\QuikFinam\luasql\mysql.luac'
no file '.\c:\QuikFinam\luasql\mysql.dll'
no file 'C:\QuikFinam\c:\QuikFinam\luasql\mysql.dll'
no file 'C:\QuikFinam\loadall.dll'
Если пишу
Код
require "c:\\QuikFinam\\luasql\\mysql.dll"
то ошибка такая
Код
module 'c:\QuikFinam\luasql\mysql.dll' not found:
no field package.preload['c:\QuikFinam\luasql\mysql.dll']
no file '.\c:\QuikFinam\luasql\mysql\dll.lua'
no file 'C:\QuikFinam\lua\c:\QuikFinam\luasql\mysql\dll.lua'
no file 'C:\QuikFinam\lua\c:\QuikFinam\luasql\mysql\dll\init.lua'
no file 'C:\QuikFinam\c:\QuikFinam\luasql\mysql\dll.lua'
no file 'C:\QuikFinam\c:\QuikFinam\luasql\mysql\dll\init.lua'
no file 'C:\Program Files (x86)\Lua\5.1\lua\c:\QuikFinam\luasql\mysql\dll.luac'
no file 'C:\QuikFinam\Include\c:\QuikFinam\luasql\mysql\dll.dll'
no file 'C:\QuikFinam\Include\c:\QuikFinam\luasql\mysql\dll.lua'
no file 'C:\QuikFinam\Include\c:\QuikFinam\luasql\mysql\dll.luac'
no file '.\c:\QuikFinam\luasql\mysql\dll.dll'
no file 'C:\QuikFinam\c:\QuikFinam\luasql\mysql\dll.dll'
no file 'C:\QuikFinam\loadall.dll'
no file 'C:\QuikFinam\Include\c:\QuikFi
Насколько я понимаю в директиве require нужно писать относительный путь. Причем, в странной форме: <имя_папки><точка><имя_модуля_без_расширения> При запуске lua скрипта QUIK сам ищет этот модуль в папках C:\QuikFinam C:\QuikFinam\luasql\ и т.д. и НЕ НАХОДИТ ЕГО !!! Если внимательно посмотреть на эти сообщения об ошибках, то можно понять, что QUIK ищет файл mysql с расширениями dll, lua и luac
Если я пишу
Код
require "luasql.mysql"
то ошибка такая
Код
error loading module 'luasql.mysql' from file 'C:\QuikFinam\luasql\mysql.dll':
Не найден указанный модуль.
Т.е. файл C:\QuikFinam\luasql\mysql.dll QUIK видит, пытается его загрузить, но не может - не понятно почему. Строка "Не найден указанный модуль" по-видимому относится не к файлу C:\QuikFinam\luasql\mysql.dll , а к чему-то другому. Что-то ему нужно ещё загрузки mysql.dll
Это да, это понятно Но речь-то про библиотеки luasql Вы их скопировали в c:\QuikFinam\luasql\, а надо прямо в папку квика c:\QuikFinam\ Либо, как вариант, квик не находит не сами эти библиотеки, а связанные с ними, от которых они зависят.
Скачал и установил программу Dependency Walker. Открыл в ней файл c:\QuikFinam\mysql.dll Если я все правильно понял, то не хватает библиотеки LUA.dll Нашел в папке c:\QuikFinam\ файл lua5.1.dll Сделал его копию и переименовал в lua.dll Теперь при запуске скрипта QUIK выдает ошибку: "error loading module 'mysql' from file '.\mysql.dll': Не найдена указанная процедура."
P.S. При использовании 64-битных версий файлов libmysql.dll и mysql.dll QUIK выдает ошибку: "error loading module 'mysql' from file '.\mysql.dll': %1 не является приложением Win32" QUIK загружает только 32-битные версии, хотя у меня 64-бинтая Win7
Квик -- только 32-битное приложение. =) Давно жду полноценную версию под 64-бита, но, видимо, у разработчиков нет полного понимания, что это действительно давно пора сделать.
Разботанил все вы в целом делали правильно, в том числе правильно, что эти библиотеки складывали в папку luasql внутри квика, а не прямо в квик и require с именем с точкой правильно
надотолько вот что доделать: внутри квика есть файл lua5.1.dll скопируйте его рядом (именно его!), но с именем lua.dll
у меня после этогоуказанная вами библиотека успешно загрузилась.
Действительно загрузилась! Кто бы знал что ему нужно! Большое спасибо!
Кому интересно напишу от начала и до конца что нужно сделать. В папке с квиком создаем папку luasql В неё копируем 2 файла libmysql.dll и mysql.dll (только 32-битные версии !! 64-битные версии QUIK НЕ загрузит !! ) В папке с квиком находим файл lua5.1.dll , делаем его копию. Копию переименовываем в lua.dll Т.е. в папке с квиком должно быть 2 абсолютно одинаковых файла, но с разными именами - lua5.1.dll и lua.dll
Сергей Николаев написал: Действительно загрузилась! Кто бы знал что ему нужно! Большое спасибо!
Насколько быстро вся эта конструкция работает Вы проверяли?
Если запустить несколько скриптов одновременно и каждый будет обращаться к Mysql, то все скрипты работают корректно (желательно проверить одновременное обращение к БД)?
так что с 64 битной версией квик в новом 2018 году? хоть когда нибудь вы сможете обновить умирающее свое детище? Работать просто невозможно становится в квике с парой луаскриптов. Сообщения что недостаточно памяти просто замучали! с каждой новой версией квика 7.12 потом 13 и 14 и памяти остается все меньше и меньше а работать все сложнее и сложнее что хочется выбросить это все нахрен и перейти на более адекватную программу. на нормальной мощной RAM64гб машине невозможно работать в этой убогой программе. эта узкая дверь просто не дает прохода и возможности для развития!
Сколько будет продолжаться этот прошлый век? не хотите раздавать бесплатно так продавайте за деньги! но сколько можно все это продолжать!
У меня Windows 10 x64 Pro. Смог подключить luasql следующим образом: 1. Удалил все прошлые версии lua и luarocks (за две недели попыток их много накопилось :) ) 2. Установил lua 5.1.4-46 (https://code.google.com/archive/p/luaforwindows/downloads) 3. Добавил переменную среды пользователя LUA_CPATH со значением
Подключение в Windows 64x по Вашей схеме не могу реализовать. При установке lua 5.1.4-46 в папку 'C:\Program Files (x86)\Lua\5.1\clibs\luasql\' ставиться 32-разрядный драйвер mysql.dll, при запуске которого из Quik выдается ошибка 'error loading module 'luasql.mysql' from file 'C:\Program Files (x86)\Lua\5.1\clibs\luasql\mysql.dll': %1 не является приложением Win32'. Если вы решили данную проблему поделитесь. Я понимаю что для корректной работы необходима 64 разрядная версия дистрибутива LUA со всеми модулями. А где её взять, весь инет перерыл - её нет.