Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL没有';t检查是否存在外键_Mysql_Database_Foreign Keys_Foreign Key Relationship - Fatal编程技术网

MYSQL没有';t检查是否存在外键

MYSQL没有';t检查是否存在外键,mysql,database,foreign-keys,foreign-key-relationship,Mysql,Database,Foreign Keys,Foreign Key Relationship,我在这里面临一个奇怪的问题 表1: create table degree (degree_id varchar(6) primary key , degree_name varchar(32) unique key , degree_abbr varchar(3)); 表2: create table course (course_id varchar(6) primary key , degree_id varchar(6) not null, course_name varchar(40

我在这里面临一个奇怪的问题

表1:

create table degree (degree_id varchar(6) primary key , degree_name varchar(32) unique key , degree_abbr varchar(3));
表2:

create table course (course_id varchar(6) primary key , degree_id varchar(6) not null, course_name varchar(40) not null ,  foreign key (degree_id) references degree 
(degree_id));
现在,就我对SQL的理解而言,如果字段degree_id的值在degree表中不存在,我就不能在course表中插入任何值

但如果我尝试插入类似的内容

insert into course values('cor_001' , 'blah' , 'COURSE NAME' );  

即使“blah”不是有效的degree\u id,此查询也会成功运行。

您可能正在使用不支持外键的MyISAM表。FK指令被解析和接受,然后被忽略

您需要使用InnoDB表以获得适当的FK支持:

CREATE TABLE (...) ENGINE=InnoDB;
                  ^^^^^^^^^^^^^^

如果执行“显示创建表格”操作,您将在输出末尾看到正在使用的引擎类型。

是的,这是正确的。现在我如何更改它们以使用InnoDB?我已经创建并填充了很多表。我无法尝试删除我的表。
alter table yourtable engine=innodb
。您必须进一步修改该表以重新应用FK定义。一旦myisam完成了
create
querys.K,它们就会丢失。因此,我需要首先修改所有引擎,然后修改表以应用外键。是否仍然需要更改mysql的默认引擎?这样我就不必每次在my.cnf/my.ini中创建表时都提到ENGINE属性了?
default storage ENGINE