我在将数据插入带有id自动增量的sqlite3数据库时遇到问题。这是我到目前为止所尝试的:
begin
db = SQLite3::Database.open db_name
db.execute "CREATE TABLE IF NOT EXISTS Audit(
id INTEGER PRIMARY KEY AUTOINCREMENT,
module TEXT,
hostname TEXT,
criticity TEXT,
raw_data TEXT
);"
rescue SQLite3::Exception => e
puts e.backtrace
ensure
db.close if db
end
我插入这样的数据:
db.execute("INSERT INTO Audit VALUES (module,hostname,criticity,raw_data)",
check,
hostname,
raw_data,
criticity
)
这是错误:
#<SQLite3::SQLException: table Audit has 5 columns but 4 values were supplied>
我不知道如何提供id
值,因为它应该自动递增
答案 0 :(得分:2)
这是一个奇怪的错误SQLite3::SQLException: no such column: module
我认为你有这种格式的错误格式试试,
db.execute("INSERT INTO Audit (module,hostname,criticity,raw_data) VALUES (?,?,?,?) ", 'module', 'host', 'criticity', "\x01\x00\x00\x00\x01")
结果:
sqlite> SELECT * FROM Audit;
1|module|host|criticity|☺
答案 1 :(得分:0)
就像猜测一样尝试插入空值。
db.execute("INSERT INTO Audit VALUES (id, module,hostname,criticity,raw_data)",
null,
check,
hostname,
raw_data,
criticity
)
另请注意https://www.sqlite.org/faq.html#q1它声明A column declared INTEGER PRIMARY KEY will autoincrement