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 秒
任何帮助将不胜感激。
【问题讨论】:
它正在处理sqlfiddlewp_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 TABLEwp_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)来增加删除修改字段
alter table 如何删除一列,SQL 中的alter 语句用来删除一张表的一列。具体的句法是啥了?