Из скрипта qlua подключится в БД mySQL

Страницы: 1
RSS
Из скрипта qlua подключится в БД mySQL
 
Уже неделю не могу заставить 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 или подскажите где их взять рабочие.
Устанавливать дополнительно ещё что-нибудь нужно?
Заранее всем спасибо.
 
Цитата
Сергей Николаев написал:
Сами файлы библиотеки находится в папке с программой QUIK по пути c:\QuikFinam\luasql\
квик ведь у вас наверняка не в этой пепке установлен
 
Цитата
swerg написал:
квик ведь у вас наверняка не в этой пепке установлен
Нет. QUIK я установил в папку c:\QuikFinam - мне так удобнее.
 
Тогда, наверное, надо писать?
Код
require "luasql\luasql.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 , но загрузить его не может, или другого какого-то файла не хватает.
 
Да, извините.
Я конечно имел в виду, что "разделителем между директорией и файлом должен быть бекслеш".
require "luasql\mysql"

можно также попробовать указать полный абсолютный путь (чтобы хотя бы начать двигаться дальше).
 
Если я пишу
Код
require "c:\\QuikFinam\\luasql\\mysql"
то ошибка такая
Код
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
 
Цитата
Сергей Николаев написал:
c:\QuikFinam\luasql\
Это да, это понятно
Но речь-то про библиотеки luasql
Вы их скопировали в c:\QuikFinam\luasql\,  а надо прямо в папку квика c:\QuikFinam\
Либо, как вариант, квик не находит не сами эти библиотеки, а связанные с ними, от которых они зависят.
 
Цитата
swerg написал:
Вы их скопировали в c:\QuikFinam\luasql\,  а надо прямо в папку квика c:\QuikFinam\
Скопировал 2 файла libmysql.dll и mysql.dll в папку c:\QuikFinam\
Саму папку c:\QuikFinam\luasql\ удалил.
В скрипте написал
Код
require "mysql"
При запуске ошибка
Код
error loading module 'mysql' from file '.\mysql.dll':
   Не найден указанный модуль.


Цитата
swerg написал:
Либо, как вариант, квик не находит не сами эти библиотеки, а связанные с ними, от которых они зависят.
Да, скорее всего именно в этом причина, но я не могу понять что QUIK ещё нужно для загрузки этого mysql.dll !!!
Как это можно узнать?
 
утилита depends
 
Выложите эти библиотеки куда-то, на том форуме регистрироваться не охота, без этого не отдают
 
Вот ссылка на mysql_2.1.1.rar
Вот ссылка на mysql_2.1.1_win64.rar
 
Скачал и установил программу 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
 
Вот что мне сейчас выдает Dependency:
ссылка
 
Квик -- только 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

В lua скрипте пишем:
Код
-- Подключение драйвера (библиотеки):
require "luasql.mysql"

-- Инициализация драйвера (библиотеки):
env = luasql.mysql()

-- подключение к базе данных:
-- conn = env:connect([имя_базы], [имя_пользователя], [пароль], [хост], [порт])
conn = env:connect( "all_trades", "root", "12345678", "localhost", 64000 )
На ЭТОЙ странице есть небольшой мануал.
 
Цитата
Сергей Николаев написал:
Действительно загрузилась! Кто бы знал что ему нужно!
Большое спасибо!

Насколько быстро вся эта конструкция работает Вы проверяли?

Если запустить несколько скриптов одновременно и каждый будет обращаться к 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 со значением
Код
C:\Program Files (x86)\Lua\5.1\clibs\?.dll;C:\Program Files (x86)\Lua\5.1\clibs\luasql\?.dll
4. Запустил новый cmd (новый обязательно чтобы новая переменная среды подхватилась), выполнил скрипт lua script.lua

Обращаю особое внимание, что библиотеки я отдельно не качал - они уже лежат в папке с lua после установки.
 
Подключение в 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 со всеми модулями. А где её взять, весь инет перерыл - её нет.  
Страницы: 1
Читают тему (гостей: 1)
Наверх