【问题标题】:Why does the MySQL query fail within this Lua script?为什么这个 Lua 脚本中的 MySQL 查询会失败?
【发布时间】:2020-03-12 18:26:38
【问题描述】:

所以我有一个使用 LuaJIT 和 LuaPower 的 MySQL 客户端库的小游戏。

现在,我已成功建立连接,并且还可以选择表格,但我无法向表格中插入任何数据。

错误本身是:

致命错误[未处理的异常]:尝试调用未初始化的函数指针

这是我的 Lua 代码,所以你可以理解我想要做什么:

addhook("join", "onJoin")
addhook("minute", "saveStats")
addhook("say", "logChat")
addhook("say","onSay")

local mysql = require'mysql'

-- MySQL Connection Details:
sql_host = "localhost" -- Host
sql_user = "root" -- USER
sql_password = "1c%CIuROpD17" --Pass
sql_db_name = "cs2d" -- DBNAME
sql_port = 3306 

local con = mysql.connect(sql_host, sql_user, sql_password, sql_db_name, 'utf8')

function onJoin(id)
local usgn = player(id, "usgn")
local ip = player(id, "ip")
local name = player(id, "name")
local datime = os.date("%c")

     if usgn > 0 then
          -- con:query("INSERT INTO `logins`(`col_int`,`col_varchar`,`col_varchar`,`col_varchar`,`col_datetime`) VALUES (usgn, ip, name, datime)")
          print("a")
          msg("new player joined!")

     elseif usgn == 0 then
         -- con:query("INSERT INTO `logins`(`col_int`,`col_varchar`,`col_varchar`) VALUES (name, datime)")
     end

end

不幸的是,查询的格式似乎不正确,或者至少不知道我可以通过哪种方式实现这一点。

我似乎无法进一步调试它。但我相信必须与我尝试进行查询的方式相关,例如选择表使用相同的连接。

【问题讨论】:

  • 这不是 Lua 错误,所以这是您正在使用的某些 C 模块中的错误。 “未初始化的函数指针”听起来像是在创建新对象时出现了问题,但它可能不是您可以修复的。
  • 是的,你是完全正确的,我以某种方式解决了这个问题,因此部分功能已经完美地工作,但创建了一个新功能并再次设法得到这个致命错误。
  • @DarkWiiPlayer 你能回答这个问题吗?看来这实际上是问题所在。

标签: mysql lua


【解决方案1】:

您不太可能因为 SQL 查询而收到此错误。由于您没有提供完整的示例,因此很难说出发生了什么,但我会先简化代码并找出错误的确切位置(例如,您不检查 @ 的返回值987654322@调用,可能返回nil)。

【讨论】:

  • 他可能正在将 nil 从 lua 传递到 c 中的某个东西。
  • 我已经设法解决了这个问题,但我开始认为我正在使用的库本身存在问题
  • 我设法解决了这个问题,但在这段代码中出现了一个新问题pastebin.com/uGPRdCvc。显然语法没问题,我检查了 PhpMyAdmin,checkUSGN 也返回 6943,这也很酷,调试 1 也出现了,但是如果我将调试 2 放在查询行之后,则不会出现。
  • @Paul Kulchenko,连接正常,正如我所说,我测试过了,但其余的都没有,现在是 :) 但是图书馆似乎很痛苦..
猜你喜欢
  • 2021-03-17
  • 1970-01-01
  • 2011-09-01
  • 2011-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-10
  • 1970-01-01
相关资源
最近更新 更多