我想创建一个表'post',但显示错误代码错误150"外键约束形式不正确">。我觉得表格的结构还可以,但我不知道为什么我不能创建它。
CREATE TABLE `post_like` (
`post_like_id` int(11) NOT NULL,
`post_id` int(11) NOT NULL,
`user_id` int(11) NOT NULL,
INDEX idx_post_id (post_id),
INDEX idx_user_id (user_id),
FOREIGN KEY(`post_id`) REFERENCES post(`post_id`) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY(`user_id`) REFERENCES user(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;
CREATE TABLE `post` (
`post_id` int(11) NOT NULL,
`user_id` int(11) NOT NULL,
`comment` varchar(300) NOT NULL,
`date_to_add` date NOT NULL,
`time_to_add` time NOT NULL,
INDEX idx_user_id (user_id),
FOREIGN KEY(`user_id`) REFERENCES user(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE= InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci ;
CREATE TABLE `user` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`login` varchar(20) NOT NULL,
`password` tinytext NOT NULL,
PRIMARY KEY (user_id)
) ENGINE= InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;
- 在post表中添加索引index idx_post_id(post_id(
- 确保按照以下顺序创建表:user、post、post_like
我在所有成功创建的表中都尝试了这一点,在为post_id添加索引后;外键约束形式不正确";错误
如果您想查看详细信息,请在抛出错误后运行SHOW ENGINE INNODB STATUS;
,在"最新外国密钥错误"部分中,您将看到如下内容:
创建表
post_like
带外键(post_id)约束失败。引用表中没有引用列作为第一列出现的索引