我想通過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