私はmysqlでこれを試しました:
mysql> alter table region drop column country_id;
そして、これを得ました:
ERROR 1025 (HY000): Error on rename of './product/#sql-14ae_81' to
'./product/region' (errno: 150)
何か案は?外部キーのもの?
私はmysqlでこれを試しました:
mysql> alter table region drop column country_id;
そして、これを得ました:
ERROR 1025 (HY000): Error on rename of './product/#sql-14ae_81' to
'./product/region' (errno: 150)
何か案は?外部キーのもの?
テーブルが InnoDB エンジンを使用している場合、通常、このエラーが発生します。その場合、外部キーを削除してから、テーブルの変更を行って列を削除する必要があります。
しかし、難しいのは、列名を使用して外部キーを削除することはできず、代わりにインデックスに使用される名前を見つける必要があることです。それを見つけるには、次の select を発行します。
SHOW CREATE TABLE 領域を表示します。
これにより、次のようなインデックスの名前が表示されます。
制約
region_ibfk_1
FOREIGN KEY (country_id
) REFERENCEScountry
(id
) ON DELETE NO ACTION ON UPDATE NO ACTION
次に、次を発行します。
テーブル領域ドロップ外部キーを変更します
region_ibfk_1
。
そして最後に:
テーブル リージョン ドロップ列 country_id を変更します。
そして、あなたは行ってもいいです!
これは確かに外部キー エラーです。perror を使用して確認できます。
shell$ perror 150
MySQL error code 150: Foreign key constraint is incorrectly formed
何が失敗したかについての詳細をSHOW ENGINE INNODB STATUS
調べるには、問題の詳細が含まれている LATEST FOREIGN KEY ERROR セクションを使用して探すことができます。
あなたの場合、country_id 列を参照している可能性が最も高い原因です。
drop ステートメントで「FOREIGN KEY」の代わりに「KEY」を使用して、alter table クエリを実行するだけです。問題の解決に役立ち、外部キー制約が削除され、テーブルの列を変更してテーブルを削除できることを願っています。
ALTER TABLE slide_image_sub DROP KEY FK_slide_image_sub;
の代わりDROP KEY
にDROP FOREIGN KEY
、
それが役立つことを願っています。
ありがとう
ご存知のとおり、これは古い投稿ですが、エラー 1025 を探しているなら、これがみんなのお気に入りの検索エンジンで最初にヒットしたものです。
ただし、この問題を解決するための簡単な「ハック」があります。
コマンドを実行する前に、まず次のコマンドを使用して外部キー制約チェックを無効にする必要があります。
SET FOREIGN_KEY_CHECKS = 0;
その後、コマンドを実行できます。
完了したら、次のコマンドを使用して、外部キー制約チェックを再度有効にすることを忘れないでください。
SET FOREIGN_KEY_CHECKS = 1;
あなたの努力に幸運を。
私はかつて同様の問題を抱えていました。テーブル A から主キーを削除しましたが、テーブル BI から外部キー列を削除しようとすると、上記と同じエラーが表示されました。
列名を使用して外部キーを削除することはできません。PHPMyAdmin または MySQL でこれをバイパスするには、属性の名前を変更または削除する前に、まず外部キー制約を削除してください。
mysql データベースのエラー ファイルを確認してください。バグ #26305によると、私の sql は原因を教えてくれません。このバグは MySQL 4.1 から存在します ;-)
MySQL Workbench などのクライアントを使用している場合は、外部キーを削除する目的のテーブルを右クリックし、外部キー タブを選択してインデックスを削除します。
次に、次のようにクエリを実行できます。
alter table table_name drop foreign_key_col_name;
変更しようとしている主キーを参照する外部キーを持つ別のテーブルがある可能性があります。
エラーの原因となったテーブルを特定するには、実行SHOW ENGINE INNODB
STATUS
してLATEST FOREIGN KEY ERROR
セクションを確認します。
SHOW CREATE TABLE カテゴリを使用して、制約の名前を表示します。
おそらくそれは、categories_ibfk_1 になるでしょう。
名前を使用して最初に外部キーをドロップし、次に列をドロップします。
ALTER TABLE categories DROP FOREIGN KEY categories_ibfk_1;
ALTER TABLE categories DROP COLUMN assets_id;
私の場合、MySQL ワークベンチを使用していましたが、テーブルに列の 1 つをドロップしているときに同じ問題に直面しました。外部キーの名前が見つかりませんでした。問題を解決するために、次の手順に従いました。
Rt。スキーマをクリックして、「スキーマ インスペクタ」を選択します。これにより、さまざまなテーブル、列、インデックスなどが提供されます。
「インデックス」という名前のタブに移動し、「列」という名前の列の下にある列の名前を検索します。見つかったら、列名「テーブル」の下にあるこのレコードのテーブルの名前を確認します。必要なテーブルの名前と一致する場合は、「名前」という名前の列から外部キーの名前を書き留めます。
次にクエリを実行します: ALTER table tableNamexx DROP KEY foreignKeyName;
これで、正常に実行される drop ステートメントを実行できます。
外部キー制約の問題だと思います。country_id は別のテーブルで外部キーとして使用されていますか?
私はDBの第一人者ではありませんが、fkを削除し、alter tableを実行してからfkをやり直すことで、このような問題(fk制約があった場合)を解決したと思います。
私は結果がどうなるかを聞くことに興味があります.mysqlはかなり不可解です.