遇到问题让它发挥作用。 MySQL不断抛出以下内容:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (order_id) REFERENCES order' at line 6
SQL是:
DROP TABLE IF EXISTS `user_orders`;
CREATE TABLE `user_orders` (
`user_orders_user_id` int(10) unsigned NOT NULL default '0',
`user_orders_order_id` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`user_orders_user_id`, `user_orders_order_id`),
FOREIGN KEY (user_id) REFERENCES user(id),
ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (order_id) REFERENCES order(id)
ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB;
user_orders
充当User.id
和Order.id
的中间表(即保存用户每个订单的记录)。我觉得我错过了一些明显的东西。 User表没有FK,Order表的FK(user_id
)到User.id
(ON DELETE CASCADE ON UPDATE CASCADE
)。
希望我只是累了,这是一个小问题......
答案 0 :(得分:3)
你有一个逗号不应该在这一行:
FOREIGN KEY (user_id) REFERENCES user(id),
此外,在您的表格中,您没有user_id
和order_id
等字段。事实上,您有user_orders_user_id
和user_orders_order_id
此外,您必须在order
之间加入'
,因为这是ypercube建议的保留字。
答案 1 :(得分:2)
不要对保留关键字的字段和表使用名称,例如order
。如果必须,请使用`order`
转义:
FOREIGN KEY (order_id) REFERENCES `order`(id)