SQL Lite丢失数据库中的记录

时间:2019-03-17 01:43:21

标签: java sqlite

我正在处理一些Java代码,并且遇到了一个奇怪的问题。

我有一个主表,该表使用rowid作为主键,并包含一条记录。插入此记录,然后根据需要进行更新。一切正常。

我还有另外三个表,用于存储与第一个表相关的数据,并由第一个表中的rowid引用。

我的问题是,何时该更新其他表中的数据,我通常会删除所有链接到主ID的记录,然后重新插入。

但是这样做似乎并不总是插入记录吗?即使数据肯定被发送到sqlite驱动程序。问题也不是一致的,有时它在循环中添加所有记录,有时它添加两个,最后一次不添加。.这与我删除记录然后重新插入记录有关吗? (真的没有道理)...还是完全其他的东西?

给出以下查询:

16.03 21:32:43 [Server] INFO [Database] Query Was: DELETE FROM faction_members WHERE faction_id='1'; 
16.03 21:32:43 [Server] INFO [Database] Query Was: INSERT INTO faction_members VALUES('1','0f448831-477e-3e62-87aa-bbbdbb2d28ed','0');

然后是第二个数据表:

16.03 21:32:43 [Server] INFO [Database] Query Was: DELETE FROM faction_ranks WHERE faction_id='1'; 
16.03 21:32:43 [Server] INFO [Database] Query Was: INSERT INTO faction_ranks VALUES('1','0','Leader'); 
16.03 21:32:43 [Server] INFO [Database] Query Was: INSERT INTO faction_ranks VALUES('1','1','General'); 
16.03 21:32:43 [Server] INFO [Database] Query Was: INSERT INTO faction_ranks VALUES('1','2','Officer'); 
16.03 21:32:43 [Server] INFO [Database] Query Was: INSERT INTO faction_ranks VALUES('1','3','Member'); 
16.03 21:32:43 [Server] INFO [Database] Query Was: INSERT INTO faction_ranks VALUES('1','4','Recruit');

写入数据库的结果是:

sqlite> select * from faction_members; <-no results
sqlite> select * from faction_ranks;
1|0|Leader
1|1|General
1|2|Officer
sqlite>

有没有猜到?我似乎没有使用插入/更新方法遇到此问题,但是当我删除记录,然后插入新行时,它们并不能可靠地将其插入表中。

没有错误报告

1 个答案:

答案 0 :(得分:0)

嗯...我可能刚刚想通了。

删除/插入是在不同的线程中完成的,所以我想这完全有可能,即使我以前曾调用过delete,它实际上并没有首先触发,也可能不在插入循环的中间触发了?

在我的代码中禁止在单独的线程上写,并且所有数据现在似乎都在数据库中。