SQL ALTER TABLE ADD PRIMARY KEY错误1064

5
由于某些原因,我的SQL脚本在添加主键语句时失败了。我想知道有没有人能解释一下为什么?
以下是表语句。
CREATE TABLE IF NOT EXISTS `wp_bwg_album` (
  `id` bigint(20) NOT NULL,
  `name` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `description` mediumtext NOT NULL,
  `preview_image` mediumtext NOT NULL,
  `random_preview_image` mediumtext NOT NULL,
  `order` bigint(20) NOT NULL,
  `author` bigint(20) NOT NULL,
  `published` tinyint(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

以下是它失败的语句 -

ALTER TABLE `wp_bwg_album`
  ADD PRIMARY KEY (`id`);

同时与表格相关的是这个最后的陈述。
ALTER TABLE `wp_bwg_album`
MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT;

我不确定问题出在哪里,这个SQL是从我的生产服务器中导出的。我现在想要更新我家里的开发服务器。使用MySql Workbench时,我遇到了标准的1064错误。

16:58:40 ADD PRIMARY KEY (id) 错误代码: 1064. 在你的SQL语法中有一个错误;请检查与你的MySQL服务器版本相对应的手册以获取正确的语法,位于第1行ADD PRIMARY KEY (id)附近。0.000秒

希望能得到任何帮助。


1
它在 sqlfiddle 上运行正常。 - Giorgos Betsos
4
wp_bwg_album 是一张空表吗?如果不是,那么在 id 列中是否有重复的值? - Chris Stillwell
1
刚刚双重检查了一下,这是一个空表,没有插入任何数据,在脚本的末尾添加了自增的 'id'。 - k.p.h
1
我感到奇怪的是,你的错误信息在“错误代码:1064”之前开始于“[时间戳] ADD PRIMARY KEY (`id`)”。它是从哪里来的?你的MySQL客户端是否建议你ADD PRIMARY KEY(`id`)是它接收并检测到语法错误的整个命令?如果是这样,那么这个错误就是有道理的,并且可能是由于命令ALTER TABLE \wp_bwg_album'的第一部分意外/过早终止/执行,第二部分``ADD PRIMARY KEY (id`)``被视为第二个单独的命令。 - eggyal
我在 MySQL 5.6.24 上测试了您的查询,它运行良好。 - MasoodRehman
显示剩余3条评论
2个回答

1

试试这个:

ALTER TABLE `wp_bwg_album`
    ADD CONSTRAINT `pk_wp_bwg_album` PRIMARY KEY (`id`);

约束名称可以是任何人。


那很有帮助,因为现在我收到了错误信息> 17:31:16 ALTER TABLE wp_bwg_album ADD CONSTRAINT pk_wp_bwg_album PRIMARY KEY (id) 错误代码:1068。定义了多个主键0.000秒。 - k.p.h
尝试使用CREATE TABLE查询添加主键pk: CREATE TABLE table-name( ID INT NOT NULL, NAME VARCHAR (20) NOT NULL, PRIMARY KEY (ID) ); - MasoodRehman
1
那么你可能之前已经声明了一个主键。尝试重新声明并尝试我的解决方案,如果不起作用,请尝试创建一个新表并定义主键。 - Sérgio Caldas
是的,但在该语句之前没有提到主键。我可能从我的 c 面板中不正确地导出了转储文件,我将重新检查这些设置。 - k.p.h
请检查一下,如果仍然无法解决问题,请按照@Massod Rehman所说的重新创建带有主键定义的表。 - Sérgio Caldas

0

尝试这个查询:

alter table wp_bwg_album
add constraint pk_id primary key(id)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接