2

我正在使用 MySQL Workbench 创建一个大型数据库。

我不断得到:

错误:错误 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` 

它仍然给我错误。

4

1 回答 1

3

看起来您将索引字段类型从 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`;
于 2013-01-29T10:04:40.380 回答