mysql - 映射(连接)创建表不允许外键?

标签 mysql sql foreign-keys join

我有这两个表用于我正在构建的网站(登录和舔)。我想允许用户保存他最喜欢的舔,所以这意味着我需要一个映射表,但它不起作用。它可以在没有外键约束的情况下工作,但我想要/需要外键约束。我已经做了研究,每个人都说像我一样创建映射表,但它不起作用。 谁能告诉我为什么这不起作用?谢谢。

表:登录

CREATE TABLE `login` (
  `login_id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) DEFAULT NULL,
  `password` varchar(50) DEFAULT NULL,
  `email` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`login_id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1

表:舔

CREATE TABLE `licks` (
  `lick_id` int(11) NOT NULL AUTO_INCREMENT,
  `lick_name` varchar(50) DEFAULT NULL,
  `lick_category` varchar(20) DEFAULT NULL,
  `lick_html_pg` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`lick_id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1

表login_licks(不工作!)

CREATE TABLE login_lick (
  login_id INT NOT NULL,
  lick_id INT NOT NULL,
  PRIMARY KEY (login_id, lick_id),
  FOREIGN KEY login_id REFERENCES login (login_id),
  FOREIGN KEY lick_id REFERENCES licks (lick_id)
);

最佳答案

外键定义中缺少括号:

CREATE TABLE login_lick (
  login_id INT NOT NULL,
  lick_id INT NOT NULL,
  PRIMARY KEY (login_id, lick_id),
  FOREIGN KEY (login_id) REFERENCES login (login_id),
  FOREIGN KEY (lick_id) REFERENCES licks (lick_id)
);

Here是一个 SQL Fiddle。

关于mysql - 映射(连接)创建表不允许外键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45557178/

相关文章:

php - Mysql查询优化Multi Column Index解决这个慢?

javascript - 为什么即使我已经在那里添加了一些显示错误消息,零值仍然可以提交?

mysql - 如何按一个表中的元素分组并按 2 列分组?

sql - 将一个存储过程的结果分配给另一个存储过程中的变量

JPA:持久外键约束的问题

SQL 一对多

python - 使用 PYMYSQL 更正 Python 中的 SQL 用法

php - JavaScript 聊天室用户名颜色

mysql - 我能保证在 mysql 中使用单个插入语句获得连续的 id 吗?

mysql - 在没有 information_schema 的情况下确定 InnoDB FK 约束