如何解决如何在mysql中创建表?
我想创建一个表“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,`comment` varchar(300) NOT NULL,`date_to_add` date NOT NULL,`time_to_add` time NOT NULL,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;
,在 LATEST FOREIGN KEY ERROR 部分您将看到如下内容:
创建表post_like
带外键
(
post_id
) 约束失败。被引用的表中没有索引,其中被引用的列显示为第一列
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。