SQLite3-存储了错误的数据
我在数据库中的一些数据出错了 尝试存储Lua字符串,例如:SQLite3-存储了错误的数据,sqlite,lua,Sqlite,Lua,我在数据库中的一些数据出错了 尝试存储Lua字符串,例如: foo = "1234..78.0" 数据库不返回任何错误。但是从SQLite 3数据库读取字符串时,它会返回奇怪的值,第一个数字是“-” 数据库: db:exec( "CREATE TABLE IF NOT EXISTS " "Pattern(" "Idx INTEGER PRIMARY KEY AUTOINCREMENT," "
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:bind( idx , value ) -- binds value to (?) at (idx)th position
所有数据类型都正确,执行不会返回任何错误
err,errno=querys.newPattern:exec()
所以err和errno都是零
queries.newPattern:lastError()
返回零
使用以下命令读取数据库:
db:exec("SELECT * FROM Pattern")
返回所有正确的数据,但“值”字段除外,该字段已损坏
每次查询之后,SQLites的最后一个错误是nil,所以我假设没有数据类型不匹配或其他问题
返回值类似于(示例):
这里执行的是什么黑魔法?因此我发现,SQLite正在将给定字符串解析为数值。这只是偶尔发生,并非总是。lua脚本中执行命令之前的最后一行,值是string类型,所以我猜是SDK引起了这个问题。您使用的是SQLite的什么绑定?此外,您不需要将绑定变量(
?
)括在括号中。
db:exec("SELECT * FROM Pattern")
"-1434302411"