mysql 添加外键约束时,提示语法错误

来源:互联网 发布:淘宝在哪里申请开店 编辑:程序博客网 时间:2024/06/07 09:33

对于mysql添加外键约束时,提示语法错误的很令人抓狂,这里我将我遇到的情况分享一下,因为截至发稿,好像还见有人遇过

首先我们要确认一下添加外键约束格式

ALTER TABLE 从表名 ADD CONSTRAINT 外键名 FOREIGN KEY (从表外键) REFERENCES 参照表(参照表主键)[ON DELETE{CASCADE | SET NULL | NO ACTION | RESTRICT}][ON UPDATE{CASCADE | SET NULL | NO ACTION | RESTRICT}]


我有需要,建立一个用户登陆日志表(usr_log),和一个用户信息表(usr),现在要日志表的Id参照用户表的Id,结果就保语法错误了

ALTER TABLE usr_log ADD CONSTRAINT id_usr FOREIGN KEY id REFERENCES usr(Id) ON DELETE RESTRICT ON UPDATE RESTRICT;
细心的同学应该发现问题了, 其实就是从表外键那里少了一个()

正确格式如下

ALTER TABLE usr_log ADD CONSTRAINT id_usr FOREIGN KEY (id) REFERENCES usr(Id) ON DELETE RESTRICT ON UPDATE RESTRICT;

有的童鞋,有时候,没少外键两边的圆括号,但是依然语法错误,这时候要考虑是不是因为表明或列名和mysql保留的关键字冲突,你可以尝试在键名两边加倒引号,也就是键盘左上角Esc键下面的按键

ALTER TABLE usr_log ADD CONSTRAINT id_usr FOREIGN KEY (`id`) REFERENCES usr(`Id`) ON DELETE RESTRICT ON UPDATE RESTRICT;

或者如下,再在表名和两边也加上

ALTER TABLE `usr_log` ADD CONSTRAINT `id_usr` FOREIGN KEY (`id`) REFERENCES `usr`(`Id`) ON DELETE RESTRICT ON UPDATE RESTRICT;
如果还是提示如下语法错误的话,就肯定是关键字写错了,自己一个一个比对吧

ERROR 1064 (42000): You have an error in your SQL syntax;


1 0
原创粉丝点击