3

これが私のエラーのプリントです:

mysql> ALTER TABLE Price DROP FOREIGN KEY Id
ERROR 1025 (HY000): Error on rename of '.\testdb\Price' to '.\t
estdb\#sql2-bcc-16' (errno: 152)

このページを読みましたが、この問題は、以前のテーブルの変更エラーから残ったテーブルが原因である可能性があることを示唆しており、データ ディレクトリを調べて、「B-xxx.から」。

私のエラーはこれに似ていますが、データ ディレクトリに「#sql2-bcc-16」がありません。とにかく、これは小さなテスト データベースであり、以前に実際にテーブルを変更したことがないため、以前に失敗したテーブルの変更のアーティファクトはありません。

編集:以下の詳細情報。

私が本当にやりたいことは、別のテーブルの Id (主キー) を (TINYINT ではなく) SMALLINT に変更することです。ただし、この Phone テーブルの Id は外部キーであり、他のテーブルの Id を参照しています。したがって、プライマリ テーブルの型変更を進める前に、このテーブルの外部キーを削除する必要があると思います。これが明確であることを願っています。

編集 2: テーブル。

セール - ID TINYINT NOT NULL、PRIMARY KEY (Id) を持つ

電話 - ID TINYINT NOT NULL、FOREIGN KEY (Id) REFERENCES Sale (Id) を持つ

データベース内のすべての ID を TINYINT ではなく SMALLINT にしたいと考えています。それが私の現状です。

4

1 に答える 1

1

で試してくださいmysql> ALTER TABLE Price DROP Id

それがうまくいくことを願っています...幸運を祈ります

私はあなたのクエリで試しましたmysql> ALTER TABLE Price DROP FOREIGN KEY Id

実行されますが、機能しませんでした!!!

アップデート:

以下のクエリを使用...

mysql> ALTER TABLE Price MODIFY Id SMALLINT

mysql> ALTER TABLE Sale MODIFY Id SMALLINT

mysql> ALTER TABLE Phone MODIFY Id SMALLINT

于 2012-01-18T06:13:29.400 に答える