mysql - 错误 1822 MySql 缺少约束索引
问题描述
我知道这已经被问了 200 万次,但我已经达到了一个点,只是盯着这个东西几个小时不知道什么给了。
DROP TABLE IF EXISTS `Branch`;
CREATE TABLE `Branch` (
`BranchID` int(11) NOT NULL,
`SKU` INT NOT NULL,
`BranchName` tinytext NOT NULL,
PRIMARY KEY (BranchID, SKU)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
DROP TABLE IF EXISTS `Items`;
CREATE TABLE `Items` (
`SKU` INT NOT NULL,
`Name` VARCHAR(100) NOT NULL,
`Price` float,
`Quantity` INT,
`BranchID` int(11) NOT NULL,
PRIMARY KEY (SKU),
FOREIGN KEY (SKU) REFERENCES Branch(SKU),
foreign key (BranchID) REFERENCES Branch(BranchID)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
无论出于何种原因,我都收到了 1822 错误,我只是看不到它来自哪里(可能是一些愚蠢的事情)。我已将它们按在 mysql 中创建的顺序排列。
解决方案
把你的items
第一个放在你的branch
. 因为它有表的外键Branch
。
DROP TABLE IF EXISTS `Items`;
DROP TABLE IF EXISTS `Branch`;
CREATE TABLE `Branch` (
`BranchID` int(11) NOT NULL,
`SKU` INT NOT NULL,
`BranchName` tinytext NOT NULL,
PRIMARY KEY (BranchID, SKU)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `Items` (
`SKU` INT NOT NULL,
`Name` VARCHAR(100) NOT NULL,
`Price` float,
`Quantity` INT,
`BranchID` int(11) NOT NULL,
PRIMARY KEY (SKU),
FOREIGN KEY (SKU) REFERENCES Branch(SKU),
foreign key (BranchID) REFERENCES Branch(BranchID)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
推荐阅读
- git - 如何不为 Github 上的某些文件夹拉取上游更改?
- ruby-on-rails - 在rails中打开一个模态
- html - 如何在 MVC 中设置可重用的文本字符串
- sql - 减去刚刚在 bigquery 中创建的列
- java - 使用 Java 从站点下载所有图像的最佳方法?当前收到 403 状态错误
- javascript - JavaScript:Axios Post 请求不发送 cookie(HTTP cookie)
- react-native - 是否至少在渲染一次之前引用任何可用的组件?
- php - 如何在laravel的另一个表中获取数据where子句
- typescript - 从 Typescript 文件中导出多个接口
- react-native - 杀死Android上的应用程序时Expo TaskManager崩溃?