当前位置: 首页 > 知识库问答 >
问题:

MariaDB错误:你有一个错误,在您的SQL语法;检查手册,对应于您的MariaDB服务器版本的正确的语法使用附近

朱修德
2023-03-14

嘿,我正在使用下面的代码创建一个名为user的表,其中包含一些外键

ALTER TABLE `user`
  ADD COLUMN IF NOT EXISTS `shipping_address` int(11) NULL,
  ADD COLUMN IF NOT EXISTS `billing_address` int(11) NULL,
  ADD CONSTRAINT IF NOT EXISTS `user_ibfk_2` FOREIGN KEY (`shipping_address`) REFERENCES `user_address` (`id`),
  ADD CONSTRAINT IF NOT EXISTS `user_ibfk_3` FOREIGN KEY (`billing_address`) REFERENCES `user_address` (`id`);

我认为这段代码是正确的,但它仍然会产生以下错误

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'FOREIGN KEY (`shipping_address`) REFERENCES `user_address` (`id`),
  ADD CON...' at line 

这个代码真的正确吗?如果没有,我如何修复它?此代码的正确变体是什么?感谢您的帮助。

编辑:我正在phpmyadmin上测试此代码

问候。

共有1个答案

陶成济
2023-03-14

作为mariadb(不是mysql!)alter table上的文档显示,如果不存在子句位于外键之后:

ADD [CONSTRAINT [symbol]]
    FOREIGN KEY [IF NOT EXISTS] [index_name] (index_col_name,...)
    reference_definition

因此,您的alter表应该类似于

ALTER TABLE `user`
  ADD COLUMN IF NOT EXISTS `shipping_address` int(11) NULL,
  ADD COLUMN IF NOT EXISTS `billing_address` int(11) NULL,
  ADD CONSTRAINT `user_ibfk_2` FOREIGN KEY IF NOT EXISTS (`shipping_address`) REFERENCES `user_address` (`id`),
  ADD CONSTRAINT `user_ibfk_3` FOREIGN KEY IF NOT EXISTS (`billing_address`) REFERENCES `user_address` (`id`);
 类似资料: