gpt4 book ai didi

mysql - 无法在 MySQL 中创建外键

转载 作者:行者123 更新时间:2023-11-29 07:02:26 24 4
gpt4 key购买 nike

这是一个基本主题,但我找不到解决方案:我有一个 test1 表和一个 test2 表:

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)
);

所以,我希望 test1.col1 成为 test2.id 的外键。

但是:

  • 当 test2 完全为空时,我可以将值插入到 test1 (test1.col1)。
  • 如果我运行 SHOW CREATE TABLE 'test1',我会看到以下内容:

    CREATE TABLE 'tes1t' (
    'id' int(11) NOT NULL,
    'col1' int(11) NOT NULL,
    'col2' int(11) DEFAULT NULL,
    PRIMARY KEY ('id'),
    KEY 'col1' ('col1')
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1

    它显示一个简单的键(不是外键),没有任何有关引用列的信息。

  • 在 TABLE_CONSTRAINTS 表中没有具有 FOREIGN KEY 约束类型的行。

为什么这不起作用?

我的MySQL版本:5.7.14

最佳答案

由于某种原因,表 test1 引擎设置为 MyISAM。虽然根据MySQL引用。 InnoDB被定义为默认存储引擎,从MySQL 5.5开始是默认的没有外键的原因是MyISAM不支持外键。尝试将表转换为 InnoDB。

您可以指定创建表时要使用的引擎

创建表 test2 (
id int 不为空,
col1 int 不为空,
col2 整数,
主键(id)
) 引擎=innoDB;

创建表 test1 (
id int 不为空,
col1 int 不为空,
col2 整数,
主键(id),
外键 (col1) 引用 test2(id)
) 引擎=innoDB;

或者通过以下方式更改现有表:

更改表 test2 engine=InnoDB;

更改表 test1 engine=InnoDB;

然后添加缺少的外键

关于mysql - 无法在 MySQL 中创建外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42875482/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com