【发布时间】:2015-07-15 06:39:38
【问题描述】:
我有一个具有以下架构定义的表:
CREATE TABLE `currency` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`code` char(3) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL
PRIMARY KEY (`id`),
UNIQUE KEY `code_UNIQUE` (`code`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
我想要的是删除id 列并将code 作为新的主键。并且其他一些表具有该表的外键。我尝试了以下命令但失败了:
SET FOREIGN_KEY_CHECKS=0;
ALTER TABLE `currency` CHANGE COLUMN `id` `id` INT(11) NOT NULL, DROP PRIMARY KEY;
ALTER TABLE currency ADD PRIMARY KEY (code);
SET FOREIGN_KEY_CHECKS=1;
MySQL 抛出以下异常:
[查询 2 中的错误] 将“./db/#sql-849_1”重命名为“./db/currency”时出错(错误号:150 - 外键约束格式不正确) 执行停止!
【问题讨论】: