gpt4 book ai didi

mysql - 错误 1005 (HY000) : Can't create table 'nortus.#sql-4e0_28' (errno: 150)

转载 作者:行者123 更新时间:2023-11-29 00:14:04 24 4
gpt4 key购买 nike

我收到 MySQL errno 150 creating foreign key。我已经阅读了关于 MySQL 创建外键的限制,它们是可以的。

服务器版本:5.5.35-0ubuntu0.13.10.2 (Ubuntu)

SQL:

CREATE TABLE idioma (
id INT(2) NOT NULL PRIMARY KEY AUTO_INCREMENT,
sigla VARCHAR(5) NOT NULL,
nome VARCHAR(30) NOT NULL,
UNIQUE INDEX ix_idioma_sigla (sigla)
) ENGINE=InnoDB;

CREATE TABLE traducao_registro (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
id_idioma INT(2) NOT NULL,
tabela VARCHAR(50) NOT NULL,
campo VARCHAR(50) NOT NULL,
id_registro INT NOT NULL,
traducao TEXT,
INDEX ix_traducao_registro_idioma (id_idioma),
INDEX ix_traducao_registro_tabela (tabela),
INDEX ix_traducao_registro_campo (campo),
INDEX ix_traducao_registro_registro (id_registro),
INDEX uk_traducao_registro_idioma_registro (tabela, campo, id_registro, id_idioma)
) ENGINE=InnoDB;
ALTER TABLE traducao_registro ADD CONSTRAINT FOREIGN KEY fk_traducao_registro_idioma (id_idioma) REFERENCES idioma.id;

show create table idioma;

| idioma | CREATE TABLE `idioma` (
`id` int(2) NOT NULL AUTO_INCREMENT,
`sigla` varchar(5) NOT NULL,
`nome` varchar(30) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `ix_idioma_sigla` (`sigla`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

show create table traducao_registro;

| traducao_registro | CREATE TABLE `traducao_registro` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_idioma` int(2) NOT NULL,
`tabela` varchar(50) NOT NULL,
`campo` varchar(50) NOT NULL,
`id_registro` int(11) NOT NULL,
`traducao` text,
PRIMARY KEY (`id`),
KEY `ix_traducao_registro_idioma` (`id_idioma`),
KEY `ix_traducao_registro_tabela` (`tabela`),
KEY `ix_traducao_registro_campo` (`campo`),
KEY `ix_traducao_registro_registro` (`id_registro`),
KEY `uk_traducao_registro_idioma_registro` (`tabela`,`campo`,`id_registro`,`id_idioma`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

最佳答案

您的语法略有偏差:在您的 ALTER 语句中,将 idioma.id 更改为 idioma(id)

ALTER TABLE traducao_registro
ADD CONSTRAINT FOREIGN KEY fk_traducao_registro_idioma (id_idioma)
REFERENCES idioma(id); -- change here

关于mysql - 错误 1005 (HY000) : Can't create table 'nortus.#sql-4e0_28' (errno: 150),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23598932/

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