MySQL Alter table奇怪的键错误

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

我正在使用MySQL工作台创建一个大型数据库

我不断得到:

错误:错误1089:前缀键不正确;使用的密钥部分不是字符串,使用的长度比密钥部分长,或者存储引擎不支持唯一前缀密钥

尝试执行以下查询时:

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它在任何控制台中都不工作,所以它是工作台,按错误的顺序做事?解决方法是什么?能否先添加列,然后将它们放到另一个查询中?这将为你做这项工作。