我遇到了一些在数据库中出错的数据。
尝试存储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," -- < -- THIS FIELD IS THE ISSUE
"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 ) -- binds value to (?) at (idx)th position
所有数据类型都是正确的,执行不会返回任何错误。
错误,错误= queries.newPattern:exec()
所以错误和错误是零。
queries.newPattern:lastError()
返回nil。
使用以下方式阅读数据库:
db:exec("SELECT * FROM Pattern")
返回所有正确的数据,但“Value”字段除外,该字段已损坏。
在每次查询之后,SQLites的最后一个错误是nil,所以我假设没有数据类型不匹配或其他什么。
返回值类似于(示例):
"-1434302411"
这里有什么黑魔法表演?