我在生产中有一个现有的数据库。我已使用liquibase导出模式,并创建了一个基本脚本,以便在为新客户安装时使用。 Liquibase将我在mssql中的所有id列导出为BIGINT,但实际上它们在数据库中是NUMERIC。
现在当我添加一个为旧表创建新表和foreight键的升级脚本时,我收到一个错误:列与外键中引用列的数据类型不同。
如果只升级(并且没有干净安装)的客户在数据库中会有NUMERIC列,它将与新的BIGINT列发生冲突。
问题是我应该怎么做,因为对于每种数据库类型,它也是不同的类型。我迷路了
答案 0 :(得分:0)
架构导出的工作是获取changeLog的起点。 liquibase的下一个版本专注于改进导出支持,但即便如此,导出的数据库具有类型和“含义”之间的差异 - 尤其是在跨数据库意义上。
正常用法是调用generateChangeLog,然后根据您对数据库的理解,读取所创建的内容并根据需要修改它以修复数据类型等。从那时起,您需要手动附加到changeLog的正常liquibase流程,因为您需要更改数据库,然后针对数据库运行修改后的更改日志。