1
我有以下代码:JRuby和HSQLDB:随机丢失的行
# my db connection is here:
# @connection = DriverManager.getConnection("jdbc:hsqldb:file:../db/rdata", "user", "user")
#the method recieves a array of hash {:rev,:time,:path,:result}
def create(list)
[email protected]()
sql=""
list.each do |i|
sql.concat("INSERT INTO RESULTS_LOGIN (REVISION, TIMESTAMP, ARCHIVEPATH, RESULTS) VALUES (#{i[:rev]},'#{i[:time]}','#{i[:path]}','#{i[:result]}');\n")
end
p sql.lines.to_a.size
st.execute(sql)
st.close
end
问题:
的sql.lines.to_a.size是128,这意味着我必须被插入128行。然而,在重新运行多次之后,我发现每次我在db中获得不同的行时。例如,这次RESULT_LOGIN表有114行,下次是99 ....还有成功的运行,它在表中创建了128行。
我不明白为什么会发生这样的事情。没有错误,没有例外,这有什么奇怪的是,在我的代码中有“创造”方法后,正确的方法,whcih执行“选择RESULTS_LOGIN *”,并打印出来,像这样:
create(list) # insert rows
read_all # print all rows
每次的“创建”后的“read_all”打印出128行和正确的数据;但是,如果在关闭并重新创建连接后单独运行read_all,或者使用HSQLDB的GUI管理工具浏览数据库,则会有一些行丢失....
同时添加后“关机=真”和“hsqldb.write_delay =假”测试成功了三次----这之前NEVEN发生。我认为这是问题。谢谢! – coolcfan