#2034·skynet

使用MySQL模块查询date类型字段出现解析失败的问题

Author: pengwanliCreated Mar 4, 2025Updated Mar 5, 2025

在使用MySQL模块查询date类型字段时,报错:_parse_row_data_binary()error,unsupported field type 10

我是这样操作的:

lua
-- day在MySQL中是date类型
local sql = "select day from tab where day = ? "
local stmt_sql = db:prepare(sql)
local res = db:execute(stmt_sql, "2020-01-01")

error

error("_parse_row_data_binary()error,unsupported field type " .. typ)

_parse_row_data_binary()error,unsupported field type 10

错误出现在_parse_row_data_binary方法的 parser = _binary_parser[typ] 语句中,发现是_binary_parser 中没有定义 [0x0a] 的key

我仿照您 _get_datetime的方法写了个_get_date

lua

_binary_parser[0x0a] = _get_date
lua

local function _get_date(data, pos)
    local len, year, month, day
    local value
    len, pos = _from_length_coded_bin(data, pos)
    if len == 4 then
        year, month, day, pos = string.unpack("<I2BB", data, pos)
        value = strformat("%04d-%02d-%02d", year, month, day)
    else
        value = "2017-09-09"
        --unsupported format
        pos = pos + len
    end
    return value, pos
end

改完查询了一下不报错了,麻烦您看下date的这个问题,谢谢!