Closed swaroopsp closed 1 year ago
Do you have a C compiler (such as Visual Studio) setup in your environment? You will need it to compile LuaSQL.
Locate where in your system you have the files mysql.h
and mysqlclient.dll
. Suppose they are in c:\foo\ and c:\bar\ respectively. Then run luarocks like this:
luarocks install luasql-mysql MYSQL_INCDIR=c:\foo MYSQL_LIBDIR=c:\bar
If the files are under directories with spaces in their names (such as c:\ Program Files (x86)\MySQL\
) you'll have to use quotes, but I'm not knowledgeable of the specific quoting style needed in the Windows shell...
Hi, I can't find mysqlclient.dll (there is only *.lib version) even I have mysql server 5.7 and mysql connector/c installed. Please could you help me exactly which version of mysql I have to download or if I have to compile mysql from sources.
OK, there is no file mysqlclient.dll in MySQL for Windows distribution. Right file name to link with Luarocks' luasql-mysql is libmysql.dll. Current rockspec never compile on windows. You must replace "mysqlclient" with "libmysql" in luasql-mysql rockspec. Use cvs-1 version.
Hello. I am installing mysql via luarocks. I followed the instruction in this thread and I got the following error:
I use this code:
luarocks install luasql-mysql MYSQL_INCDIR="C:\Program Files\MySQL\MySQL Connector.C 6.1\include" MYSQL_LIBDIR="C:\Program Files\MySQL\MySQL Connector.C 6.1\lib"
.
I found mysql.h and libmysql.dll.
Thank you so much. I followed kinda understand the instruction. Why am I still getting this?
Hello I finally installed luasql I think. Now the problem is I can't seem to run luasql-mysql. I added some images:
After Installation
and
Running luasql-mysql .
It seems like I only have mysql.dll after installation. The link you gave really help. Thanks a lot.
Try require("luasql.mysql")
.
Hello. I tried running it but at least I have new error. . By the way I have a question regarding luasql-mysql-cvs-1.rockspec. Does the sources and header need the actual location of the files?
package = "LuaSQL-MySQL" version = "cvs-1" source = { url = "git://github.com/keplerproject/luasql.git" } description = { summary = "Database connectivity for Lua (MySQL driver)", detailed = [[ LuaSQL is a simple interface from Lua to a DBMS. It enables a Lua program to connect to databases, execute arbitrary SQL statements and retrieve results in a row-by-row cursor fashion. ]], license = "MIT/X11", homepage = "http://www.keplerproject.org/luasql/" } dependencies = { "lua >= 5.1" } external_dependencies = { MYSQL = { header = "mysql.h" } } build = { type = "builtin", modules = { ["luasql.mysql"] = { sources = { "C:/Users/pc/Desktop/luasql-master/src/luasql.c", "C:/Users/pc/Desktop/luasql-master/src/ls_mysql.c" }, libraries = { "libmysql" }, incdirs = { "$(MYSQL_INCDIR)" }, libdirs = { "$(MYSQL_LIBDIR)" } } } }
Hi bonez001
This message ("The specified module could not be found") does not seem to be emitted by Lua, although the message "error loading module" was emitted by Lua (check function loaderror in src/loadlib.c). It seems that require() found the file, load it, called the correct C function (luaopen_luasql_mysql) but that function produced the error... I am sorry I don't have the appropriate Windows knowledge to help you, but that's my suspect: the link process. Could you send the output the compiler/linker produced?
Regards, Tomás
On 2016-10-13 03:32, bonez001 wrote:
Hello. I tried running it but at least I have new error. [1]. By the way I have a question regarding luasql-mysql-cvs-1.rockspec. Does the sources and header need the actual location of the files?
package = "LuaSQL-MySQL" version = "cvs-1" source = { url = "git://github.com/keplerproject/luasql.git" } description = { summary = "Database connectivity for Lua (MySQL driver)", detailed = [[ LuaSQL is a simple interface from Lua to a DBMS. It enables a Lua program to connect to databases, execute arbitrary SQL statements and retrieve results in a row-by-row cursor fashion. ]], license = "MIT/X11", homepage = "http://www.keplerproject.org/luasql/ [2]" } dependencies = { "lua >= 5.1" } external_dependencies = { MYSQL = { header = "mysql.h" } } build = { type = "builtin", modules = { ["luasql.mysql"] = { sources = { "C:/Users/pc/Desktop/luasql-master/src/luasql.c", "C:/Users/pc/Desktop/luasql-master/src/ls_mysql.c" }, libraries = { "libmysql" }, incdirs = { "$(MYSQL_INCDIR)" }, libdirs = { "$(MYSQL_LIBDIR)" } } } }
You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub [3], or mute the thread [4].
*
Links:
[1] https://cloud.githubusercontent.com/assets/20276137/19338754/995ee03e-9151-11e6-8676-b49d075d5a47.png [2] http://www.keplerproject.org/luasql/ [3] https://github.com/keplerproject/luasql/issues/26#issuecomment-253426230 [4] https://github.com/notifications/unsubscribe-auth/AAIA7edIgFArxTYCgYWRlJK0P-oZrcihks5qzdCTgaJpZM4DUN-n
What is the compiler/linker? How can I run it? Do you think it is better to use other OS?
Hi bonez001
What is the compiler/linker? How can I run it? Do you think it is better to use other OS? The compiler is the program that transforms (compiles) the source code (.c and .h) into object code (.obj). The linker is the program that joins some object files with library files (.lib or .dll) and produce the executable (.exe).
There is an important difference between those two types of libraries.
Static libraries (.lib) are code that might be copied toghether to the
final executable, while dynamic libraries (.dll) are not, because
dynamic libraries are shared between many programs. To make that
architecture work, the linker has to point to the correct places in
memory to find the functions it has to call. And, since dynamic
libraries are loaded dynamically (i.e. loaded only when the program
runs), you only know if it works when running the program.
Another important thing to know is if your Lua executable was linked to a static library or to a dynamic one. If it was linked to a static library, the code is inside the executable and it should be built with the ability to export those symbols. The linker should use those symbols when linking new libraries (which depend on the same static library mentioned above). If your Lua executable was linked to a dynamic Lua library, your new library should be linked to that same library too.
Your linker (Microsoft (R) Incremental Linker Version 14.00.24215.1, named 'link' in your terminal) is linking the driver (luasql/mysql.dll) to lua5.1.lib (at C:/gcc-lua-install/lua-5.1/src/lua5.1.lib, as shown in the terminal screen dump), but maybe the driver should be linked to a dynamic version (lua5.1.dll ???)
It would be better to hear from someone with more knowledge of Windows...
Regards, Tomás
By the way I have a question regarding luasql-mysql-cvs-1.rockspec. Does the sources and header need the actual location of the files?
No, that is not necessary (or recommended!).
This worked for me (Mac OS; MySQL and Lua installed via Homebrew):
luarocks install luasql-mysql MYSQL_INCDIR=/usr/local/include/mysql;
@bonez001 How'd you fix your issue (Click to view image)? I'm having this same issue but have no clue how to resolve it. Please help :/
Also sorry for reviving a dead issue
I also get a error while installing via luarocks under windows: " cl /nologo /MD /O2 -c -Fosrc/luasql.obj -ID:/.../include src/luasql.c -Ic:/external/include Der Befehl "cl" ist entweder falsch geschrieben oder konnte nicht gefunden werden. // cl comand not found
Error: Build error: Failed compiling object src/luasql.obj "
Hi Fantalic
I could not find these options nor this compiler (cl) in the rockspecs. Could you send us more information? What driver are you trying to install? How did you invoke LuaRocks to install the package?
Regards, Tomás
2018-07-02 9:37 GMT-03:00 Fantalic notifications@github.com:
I also get a error while installing via luarocks: " cl /nologo /MD /O2 -c -Fosrc/luasql.obj -ID:/.../include src/luasql.c -Ic:/external/include Der Befehl "cl" ist entweder falsch geschrieben oder konnte nicht gefunden werden. // cl comand not found
Error: Build error: Failed compiling object src/luasql.obj "
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/keplerproject/luasql/issues/26#issuecomment-401790453, or mute the thread https://github.com/notifications/unsubscribe-auth/AAIA7YJ1n-qj62FqOGBnVf7ryYG7nuOQks5uChQmgaJpZM4DUN-n .
Do you have a C compiler (such as Visual Studio) setup in your environment? You will need it to compile LuaSQL.
Locate where in your system you have the files
mysql.h
andmysqlclient.dll
. Suppose they are in c:\foo\ and c:\bar\ respectively. Then run luarocks like this:luarocks install luasql-mysql MYSQL_INCDIR=c:\foo MYSQL_LIBDIR=c:\bar
If the files are under directories with spaces in their names (such as
c:\ Program Files (x86)\MySQL\
) you'll have to use quotes, but I'm not knowledgeable of the specific quoting style needed in the Windows shell...
@hishamhm Thank you very much
Hello I finally installed luasql I think. Now the problem is I can't seem to run luasql-mysql. I added some images:
After Installation
and
Running luasql-mysql .
It seems like I only have mysql.dll after installation. The link you gave really help. Thanks a lot.
Hi, please let me know the steps of installing luasql
i really appreciate the help
i really appreciate the help
Hi Ankit
It seems you have successfully installed luasql-mysql, but could not attempt to load it (with require). But note that there are two important lines of information at the end of the installing process:
Creating library luasql/mysql.lib
luasql-mysql cvs-1 is now installed in C:\gcc-lua-install\lua-5.1\src\systree
The first one shows the name of the file produced and the last one shows that you choose a very old version (cvs-1, we are at 2.6 now) and that it was installed at "C:\gcc-lua-install\lua-5.1\src\systree". This "systree" surprises me! Could you check if there is such a path?
I recommend you read the message that function require emmited carefully. The Lua Team have expended a great effort in providing us many importante information! Note that the function searches for a file called "luasql-mysql.dll" which is the wrong file name. You should load the module with:
mysql = require"luasql.mysql"
The variable mysql would store a reference to the module's table.
Regards, Tomás
Dear Developers,
Help to connect the module to the Apache server. Configured httpd.conf, enabled modules: LoadModule lua_module modules/mod_lua.so LoadModule dbd_module modules/mod_dbd.so I execute the script through Apache: function handle(r) mysql = require "luasql.mysql" local env = mysql.mysql() local conn = env:connect('test','root','') print(env,conn) status,errorString = conn:execute([[CREATE TABLE sample2 (id INTEGER, name TEXT);]]) print(status,errorString) end
I am getting an error: error! C:/xampp/htdocs/lua/mysql.lua:5: module 'luasql.mysql' not found: no field package.preload['luasql.mysql'] no file 'C:\xampp\apache\bin\lua\luasql\mysql.lua' no file 'C:\xampp\apache\bin\lua\luasql\mysql\init.lua' no file 'C:\xampp\apache\bin\luasql\mysql.lua' no file 'C:\xampp\apache\bin\luasql\mysql\init.lua' no file '.\luasql\mysql.lua' no file 'C:\Program Files (x86)\Lua\5.1\lua\luasql\mysql.luac' no file 'C:\xampp\apache\bin\luasql\mysql.dll' no file 'C:\xampp\apache\bin\loadall.dll' no file '.\luasql\mysql.dll' no file 'C:\xampp\apache\bin\luasql.dll' no file 'C:\xampp\apache\bin\loadall.dll' no file '.\luasql.dll'
I installed Lua separately and everything works there, the luasql.mysql module is located.
Help, please, to connect luasql through Apache.
Hi Alexey
It seems you are taking modules/mod_dbd.so
as LuaSQL, but it is not. If you need LuaSQL you'll have to install it too. I recomend you intall LuaRocks (https://luarocks.org/) first and then use it to install other Lua packages (also known as rocks).
Regards, Tomás
LuaSQL is installed in a separate installation copy C:\Program Files (x86)\Lua\5.1\lua\luasql . Through the program "lua hello.lua" everything works. Doesn't work through the Apache 2.4 module that comes with it in the C:\xampp\apache\modules\mod_lua.so installation.
Do I need to put something in httpd.conf to make linking to C:\Program Files (x86)\Lua\5.1\lua\luasql work?
The problem was partially solved with the help of the LUA_CPATH environment variable, which pointed to: C:\Program Files (x86)\Lua\5.1\clibs\?.dll;C:\Program Files (x86)\Lua\5.1\clibs\luasql\ ?.dll But now there is another problem: error loading module 'luasql.mysql' from file 'C:\Program Files (x86)\Lua\5.1\clibs\luasql\mysql.dll': %1 is not a Win32 application.
Is there a 64 bit version of LuaSQL compilation?
I installed Apache x86 as an experiment. Now there is no message, but hangs on the line "mysql = require "luasql.mysql"". Browser message: "Unable to access site. Connection reset.". Connection code:
function handle(r)
r.content_type = "text/html"
r:puts("ok") -- it works
package.cpath = package.cpath .. ";C:/Program Files (x86)/Lua/5.1/lua/luasql/?.dll"
mysql = require "luasql.mysql" -- hangs here
local env = mysql.mysql()
local conn = env:connect('test','root','','localhost',3306)
cursor,errorString = conn:execute([[select * from myarttable]])
row = cursor:fetch({}, "a")
while row do
print(string.format("id: %s, text: %s, description: %s, keywords: %s", row.id, row.text, row.description, row.keywords))
row = cursor:fetch(row, "a")
end
end
From the console, the code runs without the error "lua exLuaSQL.lua" without declaring function handle(r). What could be the problem?
Hi Alexey
The path you added to package.cpath
is useless (assuming the file is in C:/Program Files (x86)/Lua/5.1/lua/luasql/mysql.dll
). That line should be:
package.cpath = package.cpath .. ";C:/Program Files (x86)/Lua/5.1/lua/?.dll"
When require"luasql.mysql" is executed, the '.' in the name of the module would be substituted by the directory separator, '/' or '\' or whatever the OS standard is. Thus the '?' will be substituted by "luasql/mysql" and the file will be loaded from "C:/Program Files (x86)/Lua/5.1/lua/luasql/mysql.dll".
I hope the correction above will solve your problem.
Regards, Tomás
Dear Tomás,
The old error reappears:
Hi Alexey,
Please check if the file is in C:/Program Files (x86)/Lua/5.1/lua/luasql/mysql.dll
as I supposed it should be.
If it is not, I recommend you correct the package.cpath
accordingly.
If the file is there, it seems the Apache Lua Module have a different require()
than the command line Lua interpreter...
Regards, Tomás
Dear Tomás,
the file exists. The problem was solved through my web server on require("socket") without using the module for Apache. Thanks for the help!
Sincerely, Alexei
Thus, i think we can end this issue
I tried to install luasql both mysql and jdbc version. I am struggling to install these. Spent days doing this. Will Appreciate any help. I installed LUA 5.1 from https://code.google.com/p/luaforwindows/downloads/list
1. lua-jdbc
C:\Program Files (x86)\LuaRocks\2.2>luarocks install luasql-jdbc
Error: No results matching query were found.
2. lua-mysql
C:\Program Files (x86)\LuaRocks\2.2>luarocks install luasql-mysql Installing https://rocks.moonscript.org/luasql-mysql-2.3.0-1.src.rock... Using https://rocks.moonscript.org/luasql-mysql-2.3.0-1.src.rock... switching to 'build' mode
Error: Could not find expected file mysql.h, or mysql.h for MYSQL -- you may have to install MYSQL in your system and/or pass MYSQL_DIR or MYSQL_INCDIR to the luarocks command. Example: luarocks install luasql-mysql MYSQL_DIR=/usr/local
I tried to install with MYSQL_DIR. But no help