sql >> データベース >  >> RDS >> Mysql

エラー1833(HY000):列MySQLを変更できません

    外部キーは、それらが参照する列のデータ型と一致する必要があるため、列のデータ型を変更すると、それを参照する外部キーが混乱する可能性があります。

    MySQLにはこれに対する保護手段があり、列を変更する試みを拒否しているようです。ただし、行っている特定の変更によって実際にデータ型が変更されるかどうかを確認するのは賢明ではありません。その列を変更しようとする試みを拒否するだけです。

    これを回避するには、外部キーチェックを一時的に無効にします。テーブルを再作成して確認しました:

    mysql> ALTER TABLE person MODIFY person_id SMALLINT UNSIGNED AUTO_INCREMENT;
    ERROR 1833 (HY000): Cannot change column 'person_id': used in a foreign key constraint 'favorite_food_ibfk_1' of table 'test.favorite_food'
    
    mysql> set foreign_key_checks=0;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> ALTER TABLE person MODIFY person_id SMALLINT UNSIGNED AUTO_INCREMENT;
    Query OK, 0 rows affected (0.08 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> set foreign_key_checks=1;
    


    1. 供給と需要のマッチング—ソリューション、パート1

    2. ユーザーがアップロードした画像をファイルシステムに効率的に保存する

    3. ステートメントを選択して、特定のフィールドの重複を検索します

    4. Postgres配列に値が存在するかどうかを確認します