jpa启动项目生成表时外键异常

最近新换电脑导入sql后发现jpa无法给新生成的表创建外键,异常如下:

Caused by: org.hibernate.tool.schema.spi.SchemaManagementException: Unable to execute schema management to JDBC target [alter table buss_unit add constraint FKdywhjc2lpck37yow2r0enxcq6 foreign key (buss_unit_type_id) references buss_unit_type2 (id_)]

看异常应该是mysql引起的,直接在navicat中尝试给新生成的表添加外键依然提示错误

 百度后发现原因,是因为导入的表的排序规则,与当前数据库的默认排序规则不一致导致的。

左侧原来的表的排序规则为utf8_general_ci,右侧新建表的排序规则为utf8_bin,二者排序规则不一致,所以无法创建外键关联,修改数据库排序规则后,删除表重新创建一切正常。

 

 

 恶补了一下关于mysql排序规则的知识,之前没有太留意,以为字符集一样就可以互相兼容。

utf-8 有默认的排序规则:

命令: SHOW CHARSET LIKE 'utf8%';

区别:

  • utf8_general_ci 不区分大小写, 这个你在注册用户名和邮箱的时候就要使用。
  • utf8_general_cs 区分大小写, 如果用户名和邮箱用这个 就会照成不良后果
  • utf8_bin: 字符串每个字符串用二进制数据编译存储。 区分大小写, 而且可以存二进制的内容
  • utf8_general_ci 校对速度快, 但准确度稍差。
  • utf8_unicode_ci 准确度高, 但校对速度稍慢。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值