liquibase' generateChangelog'生成错误的架构(坏数据)

时间:2016-01-20 10:17:30

标签: oracle backup liquibase

运行' generateChangelog'在Oracle数据库上,对于某些字段,changelogFile具有错误的类型(甚至更好,只是错误的值),与使用的驱动程序无关。 更接近的是,一些RAW列被转换为STRING(听起来没问题),但是像" E01005C6842100020200000E10000000"被翻译成" [B @ 433defed"。这似乎是一些blob like entity。此外,这些是原始数据库内容和备份之间唯一的数据相关差异。 当我尝试通过“更新”恢复数据库时,这些列显示问题"运行Liquibase的意外错误:*****:无效的十六进制数"。

有没有办法迫使liquibase保存问题列" as-is"或其他任何方法来克服这种情况?或者这是一个错误?

1 个答案:

答案 0 :(得分:0)

我认为需要更多信息才能诊断出这一点。理想情况下,如果您怀疑某些内容可能是错误,则提供三件事:

  1. 您采取了哪些步骤(包括正在使用的事物的版本,相关配置,发布的命令等)

  2. 实际结果是什么

  3. 预期结果是什么

  4. 现在我们有一点想法(在Oracle上运行generateChangelog,然后尝试运行更新)但是我们遗漏了Oracle数据库的结构,Oracle / Liquibase的版本以及实际的内容。命令发出。我们对实际结果有所了解(Oracle中RAW类型的列在更改日志中转换为STRING,并且可能还将这些列中的数据转换为不同于您预期的值)并对预期结果有所了解(您希望RAW数据保存在更改日志中,然后能够重新部署该更改)。

    话虽这么说,使用Liquibase备份和恢复数据库(尤其是具有RAW / CLOB / BLOB类型的列)可能不是一个好主意。

    Liquibase主要旨在帮助管理对数据库的结构的更改,而不是管理其中包含的数据。