MySql迁移到PG后出现“postgresql.util.PSQLException: 不良的类型值”

出错提示:

Bad value for type long : bytea

postgresql.util.PSQLException: 不良的类型值 long

不良类型值long报错实际上是因为postgresql数据库库底层的函数调用出现了错误才导致的,这个问题是在存取数据的时候才会发生。在postgresql数据库之中在对bytea类型,也就是一个近似比特类型的字段数据进行读取时,会将其当做long类型来处理。

在我的例子中,是act_de_model中的thumbnailbytea(对应mysql中的blob)类型的,java程序中以byte[]读取是正常的,但是在随后的步骤中(不用管它具体是什么),会尝试以long类型来转换刚才读取到的byte[]数组,因此出错。

有人主张去修改getSqlTypeDescriptorOverride这个方法,但是其实是不必要的。

修复方式:
在springBoot的配置文件中(以properties文件为例),修改以下一行(如果用到的是mybatis,则修改mybatis的配置):

#mybatis
mybatis.configuration-properties.blobType=BLOB
# 修改为以下
mybatis.configuration-properties.blobType=CLOB

# hibernate
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect

如果是yml文件,则:

mybatis:  
    configuration-properties:  
        blobType: CLOB
posted @ 2024-01-03 16:13  凉某  阅读(566)  评论(0)    收藏  举报