JRuby和HSQLDB:随机缺少行
我有以下代码:JRuby和HSQLDB:随机缺少行,sql,ruby,jruby,hsqldb,Sql,Ruby,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) st=@co
# 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)
st=@connection.createStatement()
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行要插入。然而,在多次重新运行之后,我发现每次我都会在数据库中得到不同的行。例如,这次结果登录表有114行,下一次是99行。。。。也有成功的运行,在表中生成128行
我不明白为什么会发生这种事。没有错误,没有异常,奇怪的是,在我的代码中,create方法后面有一个方法,whcih执行select*from RESULTS\u LOGIN并打印它,如下所示:
create(list) # insert rows
read_all # print all rows
每次read_all right创建后打印出128行和正确的数据;但是,如果在关闭并重新创建连接后分别运行read_all,或者使用HSQLDB的GUI管理工具浏览数据库,则会缺少一些行。…对于此类测试,您需要向URL或作为执行的SQL语句添加额外设置。这是为了确保在测试结束时保留所有未写入的数据。见我对这个问题的回答:
对于此类测试,您需要向URL或作为执行的SQL语句添加额外的设置。这是为了确保在测试结束时保留所有未写入的数据。见我对这个问题的回答:
在添加“shutdown=true”和“hsqldb.write_delay=false”之后,测试成功了三次,这是以前从未发生过的。我想这就是问题所在。谢谢在添加“shutdown=true”和“hsqldb.write_delay=false”之后,测试成功了三次,这是以前从未发生过的。我想这就是问题所在。谢谢