简而言之
如果列有注释,你如何使用st Hibernatelongblob
从 MySQL 迁移到 Postgres ?pgloader
@Lob
@Basic(fetch= FetchType.LAZY)
全文
所以我正在迁移(或至少尝试)将 MySQL DB 迁移到 postgres。我现在正试图正确移动这张桌子:
我当前的 pgloader 脚本相当简单:
LOAD DATABASE
FROM mysql://foo:bar@localhost:3306/foobar
INTO postgresql://foo:bar@localhost:5432/foobar
CAST
type int to integer drop typemod,
type bigint with extra auto_increment to bigserial drop typemod,
type bigint to bigint drop typemod
ALTER TABLE NAMES MATCHING 'User' RENAME TO 'users'
ALTER TABLE NAMES MATCHING ~/./ SET SCHEMA 'public'
;
这足以加载数据并使外键正常工作。
postgres 表如下所示:
然而File
,它是一个 java 实体,它的内容被注释@Lob
:
@Entity
@Inheritance(strategy= InheritanceType.JOINED)
public class File extends BaseEntity {
@NotNull
private String name;
@Column
@Size(max = 4096)
private String description;
@NotNull
private String mimeType;
@Lob
@Basic(fetch= FetchType.LAZY)
private transient byte[] content;
...
}
这就是应用程序无法连接到迁移的数据库并出现错误的原因:
Schema-validation: wrong column type encountered in column [content] in table [File];
found [bytea (Types#BINARY)], but expecting [oid (Types#BLOB)]
我如何让这个迁移工作?
我确实尝试设置
spring.jpa.properties.hibernate.jdbc.use_streams_for_binary=false
正如byte[] 的适当休眠注释中所建议的那样,但这没有做任何事情。