将 h2 数据库从 h2.db 转换为 mv.db
Posted
技术标签:
【中文标题】将 h2 数据库从 h2.db 转换为 mv.db【英文标题】:Converting h2 database from h2.db to mv.db 【发布时间】:2015-06-13 10:29:45 【问题描述】:我正在将旧的 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 选择有问题的行,并在那里修复时间戳字段....然后用新 jar 打开....
但我需要找到一种方法来选择它们......
【问题讨论】:
【参考方案1】:我找到了一个“最好的最坏的”解决方案:
当您使用恢复功能时,您可以创建一个 sql 转储文件,并加载到一个新的数据库中。 (以及新版本的 jar)。
它将在它无法读取的行上产生错误,但其余的已经完成。 所以损坏的行只会生成一条错误消息。 从 sql 转储文件中,我什至可以修复它.... 很多手工工作,但要完成。
仍然希望其他人提供更好的解决方案。
【讨论】:
以上是关于将 h2 数据库从 h2.db 转换为 mv.db的主要内容,如果未能解决你的问题,请参考以下文章