MySql迁移到PG后出现“postgresql.util.PSQLException: 不良的类型值”
出错提示:
Bad value for type long : bytea
或
postgresql.util.PSQLException: 不良的类型值 long
不良类型值long报错实际上是因为postgresql数据库库底层的函数调用出现了错误才导致的,这个问题是在存取数据的时候才会发生。在postgresql数据库之中在对bytea类型,也就是一个近似比特类型的字段数据进行读取时,会将其当做long类型来处理。
在我的例子中,是act_de_model中的thumbnail是bytea(对应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

浙公网安备 33010602011771号