【问题标题】:MySQL Alter table strange key errorMySQL Alter table 奇怪的键错误
【发布时间】:2013-01-12 20:15:35
【问题描述】:

我正在使用 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` 

它仍然给我错误。

【问题讨论】:

  • "workbench 做错了什么?" - 你的意思是它在 mysql 控制台中工作? =)
  • 把句子分成小块。隔离错误。
  • 我相信问题是您试图删除一列“paymentTermsId”(以及更多),并且您要求 mysql 在“paymentTermsId”(以及更多)之后添加一列。你有什么想法?
  • @Reno Jones 它在任何控制台中都不起作用,所以它是工作台以错误的顺序做事?有什么解决办法?
  • 您可以先添加列,然后将它们放到不同的查询中吗?这将为您完成这项工作。

标签: mysql database-design foreign-keys mysql-workbench


【解决方案1】:

看起来您将索引字段类型从 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`;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-30
    • 1970-01-01
    • 2011-02-24
    • 2015-02-14
    • 2017-12-20
    • 2019-01-22
    • 2012-11-24
    • 1970-01-01
    相关资源
    最近更新 更多