SQL ALTER TABLE ADD PRIMARY KEY 错误 1064

Posted

技术标签:

【中文标题】SQL ALTER TABLE ADD PRIMARY KEY 错误 1064【英文标题】:SQL ALTER TABLE ADD PRIMARY KEY error1064 【发布时间】:2016-04-26 15:42:30 【问题描述】:

由于某种原因,我的 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 工作台我得到标准的 1064 错误。

16:58:40 添加主键 (id) 错误代码:1064。您在 你的 SQL 语法;检查与您的 MySQL 对应的手册 'ADD PRIMARY KEY 附近使用正确语法的服务器版本 (id)' 在第 1 行 0.000 秒

任何帮助将不胜感激。

【问题讨论】:

它正在处理sqlfiddle wp_bwg_album 是空表吗?如果不是,id 中是否有重复值? 我在语法中看不到任何会阻止它执行的东西。老实说,我有点困惑。数据库类型中是否有任何设置可能导致这种情况? 刚刚仔细检查了一个没有插入的空白表,在脚本末尾为“id”添加了一个自动增量。 让我感到奇怪的是,在“错误代码:1064”之前,您的错误消息以“[timestamp] ADD PRIMARY KEY (`id`)”开头。那是从哪里来的?您的 MySQL 客户端是否向您建议 ADD PRIMARY KEY (`id`) 是它收到的整个命令并且已检测到语法错误?如果是这样,则该错误非常有意义,并且可能由命令ALTER TABLE `wp_bwg_album` 的第一部分意外/过早终止/执行来解释,而第二部分ADD PRIMARY KEY (`id`) 被视为第二个单独的命令。 【参考方案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秒 试试这个 add pk 与 create table 查询 CREATE TABLE table-name( ID INT NOT NULL, NAME VARCHAR (20) NOT NULL, PRIMARY KEY (ID) ); 那么你之前可能已经声明了一个主键。尝试再次执行所有操作并尝试我的解决方案,如果不起作用,请尝试使用主键定义创建一个新表。 是的,但在该语句之前没有提及主键。我可能从我的 c 面板中错误地进行了转储,我将重新检查这些设置。 检查这个,但如果仍然不起作用,请尝试使用@Massod Rehman 所说的主键定义再次创建表。【参考方案2】:

试试这个查询:

alter table wp_bwg_album
add constraint pk_id primary key(id)

【讨论】:

以上是关于SQL ALTER TABLE ADD PRIMARY KEY 错误 1064的主要内容,如果未能解决你的问题,请参考以下文章

ORACLE中通过SQL语句(alter table)来增加删除修改字段

sql

alter table 如何删除一列,SQL 中的alter 语句用来删除一张表的一列。具体的句法是啥了?

Redshift Spectrum 'alter table add partition' 安全性

mysql对字段的操作

create index 与 alter table add index 区别