テーブルを変更しようとしたときにこのエラーが発生しました。外部キー制約で使用される列を変更できません
Error Code: 1833. Cannot change column 'person_id': used in a foreign key constraint 'fk_fav_food_person_id' of table 'table.favorite_food'
ここでは、正常に実行されたCREATE TABLE STATEMENTがあります。
CREATE TABLE favorite_food(
person_id SMALLINT UNSIGNED,
food VARCHAR(20),
CONSTRAINT pk_favorite_food PRIMARY KEY(person_id,food),
CONSTRAINT fk_fav_food_person_id FOREIGN KEY (person_id)
REFERENCES person (person_id)
);
私はこの文を実行しようとしましたが、上記のエラーが発生しました。
ALTER TABLE person MODIFY person_id SMALLINT UNSIGNED AUTO_INCREMENT;
これにトランザクションを使用することを忘れないでください。そうしないと、データベースが破損する可能性があります。 –
残念ながら、MySQLはDDL文のトランザクションをサポートしていません。 DDLクエリが実行される前にオープントランザクションがコミットされています。http://dev.mysql.com/doc/refman/5.5/en/implicit-commit.html –
@FrancoisBourgeois:この行だけで詳しく説明できますか?外部キーフィールドと参照の定義は等しくなければなりません – theJava