MySQL Alter table奇怪的键错误
我正在使用MySQL工作台创建一个大型数据库 我不断得到: 错误:错误1089:前缀键不正确;使用的密钥部分不是字符串,使用的长度比密钥部分长,或者存储引擎不支持唯一前缀密钥 尝试执行以下查询时:MySQL Alter table奇怪的键错误,mysql,database-design,foreign-keys,mysql-workbench,Mysql,Database Design,Foreign Keys,Mysql Workbench,我正在使用MySQL工作台创建一个大型数据库 我不断得到: 错误:错误1089:前缀键不正确;使用的密钥部分不是字符串,使用的长度比密钥部分长,或者存储引擎不支持唯一前缀密钥 尝试执行以下查询时: ALTER TABLE `view4`.`entities` DROP COLUMN `resellerType` , DROP COLUMN `industrTypeId` , DROP COLUMN `paymentTermsId` , ADD COLUMN `paymentTermsId` IN
ALTER TABLE `view4`.`entities` DROP COLUMN `resellerType` ,
DROP COLUMN `industrTypeId` ,
DROP COLUMN `paymentTermsId` ,
ADD COLUMN `paymentTermsId` INT(11) NOT NULL AFTER `vatRateId` ,
ADD COLUMN `industrTypeId` INT(11) NOT NULL AFTER `paymentTermsId` ,
ADD COLUMN `resellerType` INT(11) NOT NULL AFTER `industrTypeId` ,
DROP FOREIGN KEY `fk_entities_grades1`
我尝试过更改各种INT列的长度,但没有效果。我在其他几张表上也发现了这个错误
工作台做错了什么
我已将其简化为:
ALTER TABLE `view4`.`entities` DROP COLUMN `resellerType` ,
DROP COLUMN `industrTypeId` ,
ADD COLUMN `industrTypeId` INT(11) NOT NULL AFTER `paymentTermsId` ,
ADD COLUMN `resellerType` INT(11) NOT NULL AFTER `industrTypeId`
它仍然给我错误。看起来您将索引字段类型从CHAR/VARCHAR更改为INT,使用的索引是使用前缀长度创建的。脚本将重新创建此字段-DROP COLUMN+ADD COLUMN,这将导致错误 尝试以这种方式更改字段-
ALTER TABLE `view4`.`entities`
CHANGE COLUMN `industrTypeId` `industrTypeId` INT(11) NOT NULL
AFTER `paymentTermsId`,
CHANGE COLUMN `resellerType` `resellerType` INT(11) NOT NULL
AFTER `industrTypeId`;
“workbench做错了什么?”-你是说它在mysql控制台中工作?=)把句子分成小块。隔离错误。我认为问题在于您试图删除一列“paymentTermsId”(和一个以上),并且您要求mysql在“paymentTermsId”(和一个以上)之后添加一列。你的想法是什么?@Reno Jones它在任何控制台中都不工作,所以它是工作台,按错误的顺序做事?解决方法是什么?能否先添加列,然后将它们放到另一个查询中?这将为你做这项工作。