gpt4 book ai didi

MySQL 无法创建表(错误号 : 150)

转载 作者:行者123 更新时间:2023-11-29 09:01:05 25 4
gpt4 key购买 nike

我有以下两个表:

CREATE TABLE `table1` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`CODE` varchar(30) COLLATE utf8_bin NOT NULL,
`LANG` varbinary(30) NOT NULL,
`NAME` varchar(255) COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`ID`),
KEY `NewIndex1` (`CODE`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 COLLATE=utf8_bin

CREATE TABLE `table2` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`TABLE1_CODE` varchar(30) NOT NULL,
`SOME_ADD` varchar(30) DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8

我正在尝试引用:

alter table `factorydb`.`table2` add constraint `FK_table2` FOREIGN KEY (`TABLE1_CODE`) REFERENCES `table1` (`CODE`)

我收到错误:

Can't create table 'factorydb.#sql-70c_306' (errno: 150)

这个想法是处理表中的语言条目,以便我在 table1 中拥有一些值

ID | CODE   | LANG | NAME
1 CARCODE EN Car
2 CARCODE DE Auto

我想引用table1中的代码,因为对我来说,两个 CARCODE 值都是有效的,仅取决于语言设置。

我做错了吗?

感谢所有帮助。

最佳答案

外键中的两列必须具有相同的类型、长度和排序规则。

顺便说一句,您确实希望更喜欢在整数而不是 varchar 上设置外键,它的连接速度更快,占用的空间也更少

关于MySQL 无法创建表(错误号 : 150),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8606281/

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