2014-10-03 53 views
0

我有大量的原始html文件,我通过Java中的连接解析并插入到MySQL数据库中。表行似乎在消失

我使用“REPLACE INTO”语句和这个方法:

public void migrate(SomeThread thread) throws Exception{ 
    PreparedStatement threadStatement = SQL.prepareStatement(threadQuery); 
    thread.prepareThreadStatement(threadStatement); 
    threadStatement.executeUpdate(); 
    threadStatement.close(); 

    for(SomeThread.Post P : thread.threadPosts){ 
     PreparedStatement postStatement = SQL.prepareStatement(postQuery); 
     P.preparePostStatement(postStatement); 
     postStatement.executeUpdate(); 
     postStatement.close(); 
    } 
} 

我运行我的程序的3种独立的情况下,在其各自的命令提示符下,与HTMLS自己单独的目录解析和承诺。

我正在使用HeidiSQL监视数据库,并且发生了一件有趣的事情,例如,我会在一个表格中看到500,000行,然后关闭HeidiSQL并稍后再回来查找我现在有440,000行。同样的事情发生在我使用的两张桌子上。

我的两个表都使用一个名为“id”的主键,每个ID都有自己的域,但是它们的值可能会重叠并相互覆盖?我不确定这是否会成为问题,因为我认为SQL会区分表的“本地”ID值。

否则我想这可能是因为我运行了3个独立的实例,每个实例都有它们与数据库的连接,所以发生了某种魔术,当一行正在提交时,执行交换到另一个提交语句取代表格,然后返回到第一次提交,然后导致数据库回滚收集的行数。

我对SQL很陌生,所以我不太确定从哪里开始,如果有人知道发生了什么,可以指向正确的方向,我真的很感激它。

感谢

回答

0

你可能想使用INSERT INTO,而不是REPLACE INTO。 数据不会消失。

这里有一些提示:

  • 你有没有实际删除条目另一个线程在运行?
  • 其他人有权访问数据库吗?

不确定HeidiSQL可以做什么。要排除这种可能性,可以改用MySQL Workbench。

0

是的,现在我对我的表运行COUNT(*)查询,我发现我的所有行都在其中。

最有可能的heidiSQL摘要页面只是一个非常粗略的估计。

感谢您使用工作台皮特的建议,我会尝试一下,看看它是否比海蒂好,因为海蒂定期冻结在我身上。