SQLite3 - 存储的数据有误。

我在使用数据库时遇到了一些问题,其中一些数据出现了错误。

试图存储 Lua 字符串,例如:

foo = "1234..78.0"

数据库没有返回任何错误。但是从 SQLite 3 数据库中读取字符串时,它返回奇怪的值,总是以“-”为第一个数字。

数据库:

db:exec(    "CREATE TABLE IF NOT EXISTS "
              "Pattern("
              "Idx        INTEGER PRIMARY KEY AUTOINCREMENT,"
              "Strip      TEXT,"
              "Startdigit INTEGER,"
              "Enddigit   INTEGER,"
              "Value      TEXT,"     -- < -- 这个字段有问题
              "Name       TEXT,"
              "Message    TEXT,"
              "Relatives  BLOB"
           ")"
         )

写入查询:

queries.newPattern:prepare("INSERT INTO Pattern(Strip, Startdigit, Enddigit, Value, Name, Message, Relatives) VALUES( (?) , (?) , (?) , (?) , (?) , (?) , (?) )")

其中 (?) 是必须在执行查询之前绑定的变量:

queries.newPattern:bind( idx , value ) -- 将 value 绑定到第 (idx) 个位置的 (?) 上

所有数据类型都是正确的,执行也没有返回任何错误。

err、errno = queries.newPattern:exec(),因此 err 和 errno 是 nil。

queries.newPattern:lastError()

返回 nil。

使用以下代码从数据库中读取:

db:exec("SELECT * FROM Pattern")

返回所有正确的数据,除了“Value”字段出现损坏。

在每个查询之后,SQLites 的最后一个错误是 nil,因此我认为没有数据类型不匹配之类的问题。

返回值类似于(示例):

"-1434302411"

这里执行了什么黑色的魔法?

点赞