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 に答える