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);