Schema-validation: wrong column type encountered in column XXX in table XXX

问题

在使用Jpa的过程中,数据库表用了tinyint的数据类型,用于记录层级,数据可能是1,2,3
启动应用时候就报:

wrong column type encountered in column [level] in table [tab]; found [tinyint (Types#TINYINT)], but expecting [integer (Types#INTEGER)]

大致意思就是说:
某某表中的某某字段被发现使用了错误的数据类型,发现使用了tinyint数据类型,但应该使用integer数据类型。

原因

查阅后发现,tinyint对应的数据类型应该是boolean,但是我设计表时并没有把这个字段当作一个boolean类型的字段,又不能因为这个问题去修改表,怎么办呢。。。

最后发现,出现这个问题的原因居然是:修改了hibernate的ddl-auto配置,
hibernate-auto设置为validate后,会在启动时自动校验数据类型,因此报错

解决方法

spring.jpa.hibernate.ddl-auto=update

ddl-auto配置的含义:

create 启动时删数据库中的表,然后创建,退出时不删除数据表
create-drop 启动时删数据库中的表,然后创建,退出时删除数据表 如果表不存在报错
update 如果启动时表格式不一致则更新表,原有数据保留
validate 项目启动表结构进行校验 如果不一致则报错

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值