簡體   English   中英

無法用外鍵更改表

[英]Unable to alter table with foreign key

我的兩個空表:

CREATE TABLE person (
    person_id SMALLINT UNSIGNED,
    fname VARCHAR(20),
    lname VARCHAR(20),
    gender ENUM('m', 'f'),
    birth_date DATE,
    street VARCHAR(30),
    city VARCHAR(20),
    state VARCHAR(20),
    country VARCHAR(20),
    postal_code VARCHAR(20),
    CONSTRAINT pk_person PRIMARY KEY (person_id)
);

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;

結果:

錯誤1833(HY000):無法更改列“ person_id”:用於表“ tom.favorite_food”的外鍵約束“ fk_fav_food_person_id”

為什么會這樣,並且有解決此問題的方法而無需刪除表並重新定義它們?

這可能是因為在任何行中person.person_id中已經有數據(NOT NULL)。 您可以通過禁用外鍵檢查來規避此問題

我認為處理此問題的最佳方法是從“ favourite_food”中刪除外鍵引用,親自更改列,然后重新創建外鍵引用。 這樣可以正確地重新創建鍵所依賴的索引。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM