在学习SSH框架的时候,由于在Hibernate定义相应的映射文件时,已经定义了一对多的关系。
可是它们给表的时候没有给出合理的外键,因此在Idea中运行的时候就会出现错误。
因此我们自己在Navicat中自己添加外键。
- 如何用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…)。如果该方法不行,那么就一个一个外键老老实实的添加 - 外键不兼容问题
一般来说,我们在看学习视频的都会很完整的直接生成想要的表,可是现实情况是我们想要在已经创建的表中添加外键。但是,我遇到了如下的问题
外键是cust_industry,主键是dict_id,两者无法兼容
我查了很多的博客,发现是什么两者不是非空,字符集不对,数据库引擎问题,应该怎么改。
最后我发现我的问题是字符集的问题,但是我已经在Navicat中修改了,可是还是不起作用。最后我把两者的数据表文件进行SQL转存,发现两者的字符集不一样!!!
如下图:
因此,如果在采用了别的方法还不能解决的话,不妨把已经存在的两张表导出成SQL文件,然后看看两者的编码是否一致。