微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在mysql中创建表?

如何解决如何在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;

解决方法

  1. 在post表中添加索引INDEX idx_post_id(post_id)
  2. 确保您按以下顺序创建表:user、post、post_like

我在所有成功创建的表中尝试了这个,在为 post_id 添加索引后没有“外键约束形成不正确”错误

如果您想查看详细信息,请在抛出错误后运行 SHOW ENGINE INNODB STATUS;,在 LATEST FOREIGN KEY ERROR 部分您将看到如下内容:

创建表post_like 带外键 ( post_id ) 约束失败。被引用的表中没有索引,其中被引用的列显示为第一列

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。