Liquibase VARCHAR2长度在字符中

Hub*_*ubi 4 database oracle rdbms database-migration liquibase

我想用chars中定义的大小独立定义一个VARCHAR2列数据库.我需要至少支持Oracle和PostgreSQL.我使用UTF8编码,所以我没有机会使用字节定义.

我需要在Oracle中使用VARCHAR2(255 CHAR)定义,但CHAR修饰符在其他dbms(如PG)下无效.在不向脚本添加CHAR修饰符的情况下,生成的Oracle定义使用字节作为length:VARCHAR2(255).

什么是正确的定义?

Nat*_*and 8

在liquibase中没有一种内置方法可以将数据类型定义为"varchar 255,char type",并在oracle上的postgresql和VARCHAR2(255 CHAR)上输出VARCHAR(255).

Liquibase被设计为可扩展(liquibase.org/extensions),您应该能够覆盖changelog中字符串"VARCHAR(255)"如何转换为特定于数据库的类型,但它需要一些Java编码.

或者,changelog参数允许您根据数据库动态地将CHAR添加到定义中.如果您添加<property name="varcharUnit" value="CHAR" dbms="oracle"/>到更改日志的顶部,那么您可以使用您的更改日志文件中的任何位置type="VARCHAR(255 ${varcharUnit})",它将在oracle和VARCHAR(255)上评估为"VARCHAR(255 CHAR)".它更冗长,你需要记住总是添加变量与扩展方法相比,但它更直接.