我正在将旧的h2数据库(扩展名为h2.db)转换为较新的mv数据库引擎。 在数据库的某些表中,我遇到了更严格的引擎问题。
只是一个SELECT * FROM确实收到错误,所以使用最新的h2-1.4.187.jar ...我甚至无法打开数据......
错误发生在TimeStampValue:
General error: "java.lang.IllegalArgumentException: timeNanos out of range 86400656000000"; SQL statement:
SELECT * FROM PURCHASES_DIVIDED [50000-187]
我正在使用嵌入式方式。
现在我尝试使用旧jar(h2-1.3.173.jar)
找到行但是不能完全解决如何查找故障行的方法..因为我在旧数据库中查询的所有内容似乎都有效,并且没有错误被捕获...
任何人都有任何线索如何解决这个问题?
我想在db表中用旧jar选择有问题的行,并在那里修复timestamp字段....然后用新jar打开....
但是我需要找到一种方法来选择它们......
答案 0 :(得分:2)
我找到了“最好的”解决方案:
使用recover函数时,可以创建sql dump文件,并加载到新数据库。 (还有新版本的jar)。
它会在无法读取的行上生成错误,但其余的都已完成。 因此,损坏的行只会生成错误消息。 从sql转储文件中我甚至可以修复它....很多手工,但是要完成。
仍希望其他人提供更好的解决方案。