我不完全是 MySQL 人,但是:
我认为问题在于您仅引用了主键的一部分:您的表 addon_account 具有复合键 PK(id, name)。
因此,为了让您的关系发挥作用,您还需要添加“account_id”作为外键的一部分:
ALTER TABLE addon_account_data ADD FOREIGN KEY (account_id, account_name) REFERENCES addon_account(id, name)
这个线程处理类似的事情。
我希望这有帮助。
已编辑
我已经在我的本地机器上安装了一个 MySQL 服务器实例......(MySQL 8)。
我已经运行了下面的脚本,并且它起作用了(警告整数显示是一个已弃用的功能,所以我建议省略它):
CREATE TABLE addon_account(
id INT(11) NOT NULL,
`name` VARCHAR(60) NOT NULL,
label VARCHAR(255),
shared INT(11),
CONSTRAINT pk_addon_account PRIMARY KEY(id, `name`));
CREATE TABLE addon_account_data (
id INT(11) NOT NULL,
account_name VARCHAR(60) NOT NULL,
account_id INT(11),
money DOUBLE,
`owner` VARCHAR(255),
CONSTRAINT pk_addon_account_data PRIMARY KEY(id, account_name),
CONSTRAINT fk_addon_account_account_data FOREIGN KEY(account_id, account_name)
REFERENCES addon_account(id, `name`));
你能试试看这对你有用吗?
我对 MySQL 不是很熟悉。