尽管数据类型相同,但MySQL错误代码1005

还有佩里

我试图在MySQL中创建三个链接表,但是我编写的脚本给了我Error code: 1005. Can't create table 'xxx.MagPage' (errno: 150)使用此错误代码检查其他线程已显示出,当两个链接的列具有不同的数据类型时,会发生此错误,但是所有外键与链接的列具有相同的类型。

这些只是示例表,但是使用与我的真实表相同的设置和数据类型。基本上,它是杂志的数据库。每本杂志都有唯一的ID,并且有问题。这些期刊可以通过其杂志ID和期刊编号一起唯一标识(多个杂志可以具有相同的期刊编号)。杂志的每一页都有一个编号,并且通过其杂志编号,发行编号和页码的组合来唯一标识。(多本杂志的页码为4,多期杂志的页码为4)。

CREATE TABLE Magazine(
    id CHAR(14) UNIQUE NOT NULL,
    PRIMARY KEY(id)
);

CREATE TABLE MagIssue(
    mag_id CHAR(14) NOT NULL,
    issue_num INTEGER NOT NULL,
    PRIMARY KEY(mag_id, issue_num),
    FOREIGN KEY(mag_id) REFERENCES Magazine(id),
    CONSTRAINT U_Issue UNIQUE (mag_id, issue_num)
);

CREATE TABLE MagPage(
    mag_id CHAR(14) NOT NULL,
    issue_num INTEGER NOT NULL,
    page_num INTEGER NOT NULL,
    PRIMARY KEY(mag_id, issue_num, page_num),
    FOREIGN KEY(mag_id) REFERENCES Magazine(id),
    FOREIGN KEY(issue_num) REFERENCES MagIssue(issue_num),
    CONSTRAINT U_Page UNIQUE (mag_id, issue_num, page_num)
);
戈登·利诺夫

主键上MagIssue有两个部分。您需要同时引用以下两者:

FOREIGN KEY (mag_id, issue_num) REFERENCES MagIssue(mag_id issue_num),

我不喜欢复合主键。您还将在多个表之间重复引用。并且整数对于索引而言往往比字符串更好(边际优化)。

我反而建议:

CREATE TABLE Magazines (
    mag_id INT AUTO_INCREMENT PRIMARY KEY,
    mag_key CHAR(14) UNIQUE NOT NULL
);

CREATE TABLE MagIssues (
    magissues_id INT AUTO_INCREMENT PRIMARY KEY,
    mag_id INT NOT NULL,
    issue_num INT NOT NULL,
    UNIQUE (mag_id, issue_num),
    FOREIGN KEY(mag_id) REFERENCES Magazine (mag_id)
);

CREATE TABLE MagPages (
    magpages_id INT AUTO_INCREMENT PRIMARY KEY,
    magissues_id INT NULL NULL,
    issue_num INTEGER NOT NULL,
    page_num INTEGER NOT NULL,
    FOREIGN KEY(magissues_id) REFERENCES MagIssues (magissues_id),
    CONSTRAINT U_Page UNIQUE (magissues_id, issue_num, page_num)
);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MySQL表顺序正确,数据类型匹配,所以为什么会出现错误1005(HY000)

来自分类Dev

MySql错误代码:1005无法创建表错误号:150

来自分类Dev

插入数据错误代码23000 mysql pdo php

来自分类Dev

MySQL从CSV数据加载空值错误代码1582

来自分类Dev

尽管数据类型相同,但“外键约束形成不正确”

来自分类Dev

MySQL错误代码1241

来自分类Dev

重载相同的数据类型

来自分类Dev

合并代码中错误的数据类型错误,但分开的代码中错误

来自分类Dev

MySQL 在插入后提供错误的 ID(数据类型?)

来自分类Dev

数据类型转换错误

来自分类Dev

变量数据类型错误?

来自分类Dev

SQL,数据类型错误

来自分类Dev

Spark中发现相同和所需数据类型的“错误:类型不匹配”

来自分类Dev

Spark中发现相同和所需数据类型的“错误:类型不匹配”

来自分类Dev

列数据类型-MySQL

来自分类Dev

MySql SET数据类型

来自分类Dev

尝试从数据库获取json数据时获取MYSQL错误代码

来自分类Dev

尝试从数据库获取json数据时获取MYSQL错误代码

来自分类Dev

MySQL外键错误代码1215

来自分类Dev

不同的服务器,具有完全相同代码的不同数据类型

来自分类Dev

错误代码:1005-无法创建表(错误号:150)

来自分类Dev

迭代边界与数据类型的相同

来自分类Dev

MySQL错误代码:1265。第7行的列“ prod_code”的数据被截断

来自分类Dev

MySQL 错误代码 1265:我的 csv 数据有什么问题?

来自分类Dev

错误的错误代码

来自分类Dev

Mysql where 子句比较对于相同值的 double 和 float 数据类型给出不同的结果

来自分类Dev

SQL代码错误将数据类型varchar转换为float

来自分类Dev

输入的VBA VlookUp无法获取结果,是代码错误还是数据类型不匹配?

来自分类Dev

MySQL FK错误1005-与FK相同的PK

Related 相关文章

  1. 1

    MySQL表顺序正确,数据类型匹配,所以为什么会出现错误1005(HY000)

  2. 2

    MySql错误代码:1005无法创建表错误号:150

  3. 3

    插入数据错误代码23000 mysql pdo php

  4. 4

    MySQL从CSV数据加载空值错误代码1582

  5. 5

    尽管数据类型相同,但“外键约束形成不正确”

  6. 6

    MySQL错误代码1241

  7. 7

    重载相同的数据类型

  8. 8

    合并代码中错误的数据类型错误,但分开的代码中错误

  9. 9

    MySQL 在插入后提供错误的 ID(数据类型?)

  10. 10

    数据类型转换错误

  11. 11

    变量数据类型错误?

  12. 12

    SQL,数据类型错误

  13. 13

    Spark中发现相同和所需数据类型的“错误:类型不匹配”

  14. 14

    Spark中发现相同和所需数据类型的“错误:类型不匹配”

  15. 15

    列数据类型-MySQL

  16. 16

    MySql SET数据类型

  17. 17

    尝试从数据库获取json数据时获取MYSQL错误代码

  18. 18

    尝试从数据库获取json数据时获取MYSQL错误代码

  19. 19

    MySQL外键错误代码1215

  20. 20

    不同的服务器,具有完全相同代码的不同数据类型

  21. 21

    错误代码:1005-无法创建表(错误号:150)

  22. 22

    迭代边界与数据类型的相同

  23. 23

    MySQL错误代码:1265。第7行的列“ prod_code”的数据被截断

  24. 24

    MySQL 错误代码 1265:我的 csv 数据有什么问题?

  25. 25

    错误的错误代码

  26. 26

    Mysql where 子句比较对于相同值的 double 和 float 数据类型给出不同的结果

  27. 27

    SQL代码错误将数据类型varchar转换为float

  28. 28

    输入的VBA VlookUp无法获取结果,是代码错误还是数据类型不匹配?

  29. 29

    MySQL FK错误1005-与FK相同的PK

热门标签

归档