Mysql 为什么可以';我不能在此列上创建外键吗?

Mysql 为什么可以';我不能在此列上创建外键吗?,mysql,foreign-keys,Mysql,Foreign Keys,我正在尝试创建两个具有一对多关系的表。以下是这两种模式的模式: CREATE TABLE property_key ( id INTEGER AUTO_INCREMENT PRIMARY KEY, property VARCHAR(4000) ); CREATE TABLE property_value ( id INTEGER AUTO_INCREMENT PRIMARY KEY, prop_key VARCHAR(4000), prop_value

我正在尝试创建两个具有一对多关系的表。以下是这两种模式的模式:

CREATE TABLE property_key (
    id INTEGER AUTO_INCREMENT PRIMARY KEY,
    property VARCHAR(4000)
);

CREATE TABLE property_value (
    id INTEGER AUTO_INCREMENT PRIMARY KEY,
    prop_key VARCHAR(4000),
    prop_value VARCHAR(4000),
    lang VARCHAR(2),
    INDEX ix_land(lang)
);
当我试图在
prop\u key
上的
property\u value
property\u key
之间添加外键关系时,我得到一个奇怪的错误:

我使用的ALTER语法是:

ALTER TABLE property_value ADD CONSTRAINT fk_prop_key FOREIGN KEY (prop_key) REFERENCES property_key(property);

我已经就这件事咨询了政府,但我已经满足了那里的所有要求。如何缓解此问题?

一个问题是字段太大,正在创建的外键大约为8KB。此外,无法确保外键是唯一的

有两个选项可以缓解这种情况—您可以将VARCHAR字段的大小减少到768字节以下,或者改为索引两个
id
字段

ALTER TABLE property_value
    ADD CONSTRAINT fk_property_key_id FOREIGN KEY (property_key_id)
    REFERENCES property_key(id);

4000个字符的主键?哎呀。
ALTER TABLE property_value
    ADD CONSTRAINT fk_property_key_id FOREIGN KEY (property_key_id)
    REFERENCES property_key(id);