Create TABLE Student
(Sno CHAR(9) PRIMARY KEY not null, /*列级完整性约束,Sno是主码*/
Sname CHAR(20) not null,
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;/*指定字符集的编码方式为utf8,以便后续插入汉字型元组数据*/
#创建课程表
create table Course
(Cno CHAR(4) PRIMARY KEY not null, /*列级完整性约束,Sno是主码*/
Cname char(40) NOT NULL,
Cpno CHAR(4), /*Cpno是先修课*/
Ccredit SMALLINT,
FOREIGN KEY (Cpno) REFERENCES Course(Cno) /*表级完整性约束条件,Cpno是外码,被参照对象是Cource,被参照列是Cno*/
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
#创建选课表
CREATE TABLE SC
(Sno CHAR(9) not null ,
Cno CHAR(4) not null ,
Grade SMALLINT,
primary key (sno,cno),
foreign key (Sno) references Student(sno),
foreign key (Cno) references Course(cno)
ERROR 1215 (HY000): Cannot add foreign key constraint
- 报错释义:不能添加外键约束
- 报错原因:因为SC数据表依赖于Student和Course表,但是Student和Course表的字符集编码方式指定为utf8(为了插入含中文的元组数据),而SC表的默认字符集编码方式为latin1,导致数据表引擎enging不匹配,故而报错。
#创建选课表
CREATE TABLE SC
(Sno CHAR(9) not null ,
Cno CHAR(4) not null ,
Grade SMALLINT,
primary key (sno,cno),
foreign key (Sno) references student(sno),
foreign key (Cno) references Course(cno)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
1.MySQL : ERROR 1215 (HY000): Cannot add foreign key constraint
2.ERROR 1215 (HY000): Cannot add foreign key constraint
这篇文章主要涉及到在数据创建表时,遇到ERROR 1215 (HY000): Cannot add foreign key constraint 问题方面的内容,对于在数据创建表时,遇到同样问题感兴趣的同学可以参考一下。
一、问题的提出
创建两个表:
product: 商品表
sealer: 供货商表
相应的SQL如下:
product表:
DROP TABLE IF EXISTS `product`;
CREATE TABLE `product` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT
前言这篇文章主要涉及到在数据创建表时,遇到ERROR 1215 (HY000): Cannot add foreign key constraint 问题方面的内容,对于在数据创建表时,遇到同样问题感兴趣的同学可以参考一下。一、问题的提出创建两个表:product: 商品表sealer: 供货商表相应的SQL如下:product表:DROP TABLE IF EXISTS `product`;...
MySQL5.7 cannot add foreign key contraint检查点三种错误引起的报错1.关联至主表的非主键报错2.从表的关联字段类型与主表的管理字段类型不一致报错3.存储引擎不一致报错
刚开始学习mysql的时候经常会遇到添加外键约束失败的问题。当遇到这类问题是需要检查:
1.该外键所参考的字段必须是主表的主键
2.主表和从表的关联字段必须具有相同的数据类型
3.两张...
ERROR 1215 (HY000): Cannot add foreign key constraint在用laravel建表时遇到了这个错误,然后找了下找到了解决办法,记录下:是要建两张表:Schema::create('users', function (Blueprint $table) {$table->bigIncrements('id');$table->string('...
出现错误原因:
因为你要添加外键时,你的外键类型是int
而引用的主键类型也是 int,如果你的主键设置auto_increment(那么你的字段类型实际上是unsigned_int)
主键,外键类型不一致,所以无法添加外键。
所以此时将我们的外键字段类型改为无符号整数。那么就可以成功添加外键了。
最近,需要在原数据库上,增加更多的外键进行更强约束,然后进行数据迁移,遇到了一些外键问题记录如下:
1.给表添加外键,报错ERROR 1215 (HY000): Cannot add foreign key constraint
mysql> alter table oa_id_user add constraint FK_USER_JOB_1 foreign key (job_code) references oa_id_job (code);
估计使用外键出错了,检查一下外键表和这个表1. 两个字段的类型或者大小不严格匹配。例如,如果一个是int(10),那么外键也必须设置成int(10),而不是int(11),也不能是tinyint。另外,你还必须确定两个字段是否都为signed或者unsigned,这两字段必须严格地一致匹配。2. 设置外键的字段没有建立起索引,或者不是一个primary key(主键)。一般,需要建立外键的数据表...
在安装好了MySQL之后,使用了新的配置文件后,MySQL服务器可以成功启动,但在登陆的时候出现了ERROR 2002 (HY000): Can’t connect to local MySQL server through socket,即无法通过socket连接到mysql服务器,同时提供了socket文件的位置。下面是这个问题的描述与解决办法。
1、故障现象
代码如下:
[root@SZDB mysqldata]# mysql -uroot -p123456
Warning: Using a password on the command line interface can be i
今天用数据库时出现 Error 1215:Cannot add foreign key constraint 报错,在经历了一番波折后解决了问题的所在,写下这篇博客记录一下。
运行的代码:
CREATE TABLE `admitpatient_room` (
`PatientID` int(10) NOT NULL,
`Disease` varchar(50) DEFAULT NULL,
`AdmitDate` date DEFAULT NULL,
`RoomNo` int(5) DEF.
SQL标准不提供修改模式定义和修改视图定义的操作模式的定义与删除1定义模式模式的定义语句:CREATE SCHEMA<模式名>authorization<用户名>如果没有指定模式名,那么模式名隐含为用户名用户可以在创建模式的同时在这个模式定义中进一步创建表视图定义授权。2删除模式drop schema<模式名><cascade|restrict>ca...