这是一个基本主题,但我无法找到解决方案:
我有一个$&
表和一个test1
表:
test2
所以,我希望test1.col1成为test2.id的外键。
可是:
如果我运行CREATE TABLE test2 (
id int NOT NULL,
col1 int NOT NULL,
col2 int,
PRIMARY KEY (id)
);
CREATE TABLE test1 (
id int NOT NULL,
col1 int NOT NULL,
col2 int,
PRIMARY KEY (id),
FOREIGN KEY (col1) REFERENCES test2(id)
);
,我会看到:
SHOW CREATE TABLE 'test1'
它显示一个简单的密钥(不是外来的),没有任何关于引用列的信息。
在TABLE_CONSTRAINTS表中,没有FOREIGN KEY约束类型的行。
为什么这不起作用?
我的MySQL版本:5.7.14
答案 0 :(得分:2)
由于某种原因,表CREATE TABLE test2 (
id int NOT NULL,
col1 int NOT NULL,
col2 int,
PRIMARY KEY (id)
) engine=innoDB;
引擎设置为MyISAM。虽然根据MySQL参考。 InnoDB被定义为默认存储引擎,这是MySQL 5.5的默认存储引擎
您没有外键的原因是MyISAM不支持外键。
尝试将表格转换为InnoDB。
您可以指定创建表时要使用的引擎
CREATE TABLE test1 (
id int NOT NULL,
col1 int NOT NULL,
col2 int,
PRIMARY KEY (id),
FOREIGN KEY (col1) REFERENCES test2(id)
) engine=innoDB;
alter table test2 engine=InnoDB;
或者通过以下方式更改现有表格:
alter table test1 engine=InnoDB;
var lowestTide=res.extremes.filter(tide => { return tide.type=="Low"; }).sort(function(a,b) {return (a.height > b.height) ? -1 : ((b.height > a.height) ? 1 : 0);} )[0]
var highestTide=res.extremes.filter(tide => { return tide.type=="High"; }).sort(function(a,b) {return (a.height > b.height) ? -1 : ((b.height > a.height) ? 1 : 0);} )[0]
然后添加缺少的外键