我想通过mysql代理连接到使用LuaSql的mysql服务器。我试图执行一个简单的程序(db.lua):错误:错误的参数#1到'插入'(表预期,得到零)
require("luasql.mysql")
local _sqlEnv = assert(luasql.mysql())
local _con = nil
function read_auth(auth)
local host, port = string.match(proxy.backends[1].address, "(.*):(.*)")
_con = assert(_sqlEnv:connect("db_name", "username", "password", "hostname", "3306"))
end
function disconnect_client()
assert(_con:close())
end
function read_query(packet)
local cur = con:execute("select * from t1")
myTable = {}
row = cur:fetch(myTable, "a")
print(myTable.id,myTable.user)
end
此代码执行时,也没有我执行mysql-proxy
它。当我与mysql-proxy连接时,错误日志显示以下错误:
mysql.lua:8:错误的参数#1'insert'或以前的错误加载模块“luasql.mysql”
mysql.lua是LuaSql的默认文件:
---------------------------------------------------------------------
-- MySQL specific tests and configurations.
-- $Id: mysql.lua,v 1.4 2006/01/25 20:28:30 tomas Exp $
---------------------------------------------------------------------
QUERYING_STRING_TYPE_NAME = "binary(65535)"
table.insert (CUR_METHODS, "numrows")
table.insert (EXTENSIONS, numrows)
---------------------------------------------------------------------
-- Build SQL command to create the test table.
---------------------------------------------------------------------
local _define_table = define_table
function define_table (n)
return _define_table(n) .. " TYPE = InnoDB;"
end
---------------------------------------------------------------------
-- MySQL versions 4.0.x do not implement rollback.
---------------------------------------------------------------------
local _rollback = rollback
function rollback()
if luasql._MYSQLVERSION and string.sub(luasql._MYSQLVERSION, 1, 3) == "4.0" then
io.write("skipping rollback test (mysql version 4.0.x)")
return
else
_rollback()
end
end
这是什么意思:“与mysql-proxy连接”?这是一个模块吗?脚本?你如何使用它? – Schollii
@Schollii它是一个lua脚本(db.lua),我在我的mysql-proxy.cnf文件中指定了mysql proxy.I通过mysql代理使用它从mysql-proxy访问mysql服务器..我清楚了吗? – robin
根据[mysql-proxy文档](http://dev.mysql.com/doc/refman/5.0/en/mysql-proxy-scripting-read-query.html)和您发布的代码,我猜测您正在尝试编写mysql-proxy脚本,而不是通过mysql代理连接到mysll服务器。在那种情况下,你的意思是“当我在没有myql-proxy的情况下执行它们时执行得很好”。您收到的错误意味着代理不会创建CUR_METHODS表。是什么让你认为从代理内部创建数据库连接是允许的? – Schollii