强制Liquibase将Blob映射到PostgreSQL上的BYTEA

Dan*_*lor 6 postgresql blob liquibase

如何告诉Liquibase在PostgreSQL上将BLOB数据类型映射到BYTEA?

似乎Hibernate人员已经接管并调整了该工具以满足他们的需求:https://liquibase.jira.com/browse/CORE-1863,但是,EclipseLink不支持oid,而且这个bug似乎仍然是开放的:https :?//bugs.eclipse.org/bugs/show_bug.cgi ID = 337467

我需要使用EclipseLink,我需要在PostgreSQL中使用blob.我想使用Liquibase,是否有可能让这些东西一起工作?

a_h*_*ame 14

你有两个选择.

如果您只需要Postgres,并且不打算支持其他DBMS,只需使用bytea列类型即可.

未列为列标记描述中的"通用"类型之一的任何数据类型将"按原样"传递给数据库,例如

<createTable tableName="foo">
  <column name="id" type="integer"/> 
  <column name="picture" type="bytea"/>
</createTable>
Run Code Online (Sandbox Code Playgroud)

如果要支持不同的DBMS,可以根据DBMS定义属性:

<property name="blob_type" value="bytea" dbms="postgresql"/>
<property name="blob_type" value="blob" dbms="oracle"/>
Run Code Online (Sandbox Code Playgroud)

然后

<createTable tableName="foo">
  <column name="id" type="integer"/> 
  <column name="picture" type="${blob_type}"/>
</createTable>
Run Code Online (Sandbox Code Playgroud)

  • 是的,之前的 liquibase 版本 3.5.2 将默认的 blob 列类型更改为 oid 而不是 bytea https://liquibase.jira.com/browse/CORE-1863 (3认同)