从1.5.2.x到2.3.8的Spring引导迁移:如何处理存储为byteArray的LocalDateTime



我有弹簧引导1.5.x,现在迁移到2.3.8.RELEASE.

我有一个带有字段"的实体;private LocalDateTime endTime";并且在postgres DB中它被映射到类型";字节";。现在,由于我可能有了新的依赖项,flyway出现了以下错误:

Schema-validation: wrong column type encountered in column [end_time] in table [stream_info]; found [bytea (Types#BINARY)], but expecting [timestamp (Types#TIMESTAMP)]

当我用一个全新的postgres DB启动应用程序时,也会出现这种情况。

有人知道我现在该做什么吗?我需要转换器吗?这里可能有什么问题?

看起来您开始使用的Hibernate版本还不支持LocalDateTime,所以它通过Java序列化序列化为bytea。现在您使用的是一个较新的Hibernate版本,它支持这种类型,并将其正确映射到timestamp。你唯一的办法就是迁移数据。您必须读取每一行,反序列化数据并将其写入临时timestamp列。迁移所有数据后,可以重命名该列,也可以删除bytea列以使用timestamp列。无论哪种方式,这都需要手动迁移。

相关内容

  • 没有找到相关文章

最新更新