lua-mysql is a MySQL client library for Lua. It is compatible with Lua 5.2.3(or above) and based on the MySQL C API provided by the official MySQL library.
install Lua from repo and then
makeor use the environment variable LUADIR to specify the Lua source you want to use
LUADIR=/path/to/lua makeFirst you need to use mysql = require('luamysql') to import a table named mysql(or any other valid name).
-
client, errmsg = mysql.newclient(dbarg)- Attempts to establish a connection to a MySQL server specified by
dbarg. If successfully executed, a valid MySQL clientclient, plus anilforerrmsg, are returned; otherwiseclientwill beniland an error messageerrmsgis returned. Seeluamysql-demo.luafor more details aboutdbarg.
- Attempts to establish a connection to a MySQL server specified by
-
errmsg = client:ping()- Checks whether the connection to the server is working. If the connection has gone down and auto-reconnect is enabled an attempt to reconnect is made. If the connection is down and auto-reconnect is disabled, an error message
errmsgis returned.
- Checks whether the connection to the server is working. If the connection has gone down and auto-reconnect is enabled an attempt to reconnect is made. If the connection is down and auto-reconnect is disabled, an error message
-
errmsg = client:selectdb(dbname)- Causes the database specified by
dbnameto become the default (current) database of theclient.nilis returned if successfully executed, otherwise an error messageerrmsgis returned.
- Causes the database specified by
-
errmsg = client:setcharset(charset)- Sets the default character set to be
charsetfor the current connection.nilis returned if successfully executed, otherwise an error messageerrmsgis returned.
- Sets the default character set to be
-
result, errmsg = client:escape(str)- Converts the
strto a legal SQL string that can be used in a SQL statement. If successfully executed, aresultcontaining a valid string, and anilforerrmsg, are returned; otherwise theresultwill benil, and an error messageerrmsgis returned.
- Converts the
-
result, errmsg = client:execute(sqlstr)- Executes a SQL statement
sqlstr. If successfully executed, aresultcontaining all information, and anilforerrmsg, are returned; otherwise theresultwill benil, and the error messageerrmsgtells what happened.
- Executes a SQL statement
-
size = result:size()- Returns the number of record(s) in the
result.nilis returned if error occurs.
- Returns the number of record(s) in the
-
fieldnamelist = result:fieldnamelist()- Returns the fieldname list for the
result.nilis returned if error occurs.
- Returns the fieldname list for the
-
result:recordlist()- Returns an iteration closure function which can be used in the
for ... inform.nilis returned if error occurs. Each record returned by the iterator function is an array containing values corresponding to the fieldname list which is the result ofresult:fieldnamelist().
- Returns an iteration closure function which can be used in the
See luamysql-demo.lua for more details.
lua-mysql can also be integrated with C/C++ programs for executing Lua scripts. See host.c for how to import it into C/C++ environment.
-
If you try to run
luamysql-demo.luawith the following command:$ lua luamysql-demo.lua
but encounter an error message like this:
lua dynamic libraries not enabled; check your Lua installation
which means you need to re-compile Lua with extra arguments to enable loading dynamic libraries. For example, in Linux systems:
$ make posix MYCFLAGS="-DLUA_USE_DLOPEN -fPIC" MYLIBS=-ldl
-
If there is an error message like this:
multiple Lua VMs detected
you may re-compile the Lua interpreter with option
-Wl,-E.
Enjoy it!