运行' generateChangelog'在Oracle数据库上,对于某些字段,changelogFile具有错误的类型(甚至更好,只是错误的值),与使用的驱动程序无关。 更接近的是,一些RAW列被转换为STRING(听起来没问题),但是像" E01005C6842100020200000E10000000"被翻译成" [B @ 433defed"。这似乎是一些blob like entity。此外,这些是原始数据库内容和备份之间唯一的数据相关差异。 当我尝试通过“更新”恢复数据库时,这些列显示问题"运行Liquibase的意外错误:*****:无效的十六进制数"。
有没有办法迫使liquibase保存问题列" as-is"或其他任何方法来克服这种情况?或者这是一个错误?
答案 0 :(得分:0)
我认为需要更多信息才能诊断出这一点。理想情况下,如果您怀疑某些内容可能是错误,则提供三件事:
您采取了哪些步骤(包括正在使用的事物的版本,相关配置,发布的命令等)
实际结果是什么
预期结果是什么
现在我们有一点想法(在Oracle上运行generateChangelog,然后尝试运行更新)但是我们遗漏了Oracle数据库的结构,Oracle / Liquibase的版本以及实际的内容。命令发出。我们对实际结果有所了解(Oracle中RAW类型的列在更改日志中转换为STRING,并且可能还将这些列中的数据转换为不同于您预期的值)并对预期结果有所了解(您希望RAW数据保存在更改日志中,然后能够重新部署该更改)。
话虽这么说,使用Liquibase备份和恢复数据库(尤其是具有RAW / CLOB / BLOB类型的列)可能不是一个好主意。
Liquibase主要旨在帮助管理对数据库的结构的更改,而不是管理其中包含的数据。