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

对于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;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值