外键不兼容问题( in foreign key constraint are incompatible)

在学习SSH框架的时候,由于在Hibernate定义相应的映射文件时,已经定义了一对多的关系。
可是它们给表的时候没有给出合理的外键,因此在Idea中运行的时候就会出现错误。  
因此我们自己在Navicat中自己添加外键。
  1. 如何用SQL语句添加外键
    1) 对于创建表的时候添加外键
    CREATE TABLE score1(
    score DOUBLE,
    sid INT,
    CONSTRAINT fk_stu_score1_sid FOREIGN KEY(sid) REFERENCES stu(sid)
    );
    2)对于已经存在表了再添加外键
    CREATE TABLE score1(
    score DOUBLE,
    sid INT
    );
    ALTER TABLE score1 ADD CONSTRAINT fk_sid FOREIGN KEY(sid) REFERENCES stu(sid)
    注:CONSTRAINT后面的名字是自定义的
        如果想要定义多个外键,语法为: FOREIGN KEY(外键…) REFERENCES stu(sid…)。如果该方法不行,那么就一个一个外键老老实实的添加
  2. 外键不兼容问题
    一般来说,我们在看学习视频的都会很完整的直接生成想要的表,可是现实情况是我们想要在已经创建的表中添加外键。但是,我遇到了如下的问题
    外键是cust_industry,主键是dict_id,两者无法兼容
    我查了很多的博客,发现是什么两者不是非空,字符集不对,数据库引擎问题,应该怎么改。
    最后我发现我的问题是字符集的问题,但是我已经在Navicat中修改了,可是还是不起作用。最后我把两者的数据表文件进行SQL转存,发现两者的字符集不一样!!!
    如下图:
    在这里插入图片描述
    因此,如果在采用了别的方法还不能解决的话,不妨把已经存在的两张表导出成SQL文件,然后看看两者的编码是否一致。
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值