我想更新一个当前是纯INT(16)的列,以便它引用另一个表上的FK。我试过以下,但有错误:MySQL添加外键
ALTER TABLE ts_keys ADD CONSTRAINT FK_account_id FOREIGN KEY (account_id) REFERENCES accounts(id) ON UPDATE CASCADE ON DELETE CASCADE
编辑:对不起,忘了加上错误:
Can't create table (errno: 150)
两个表是Innodb的。
编辑2:我也尝试重新创建表,但同样的错误:
CREATE TABLE ts_keys (
id int PRIMARY KEY AUTO_INCREMENT,
account_id int,
FOREIGN KEY fk_account_id1(account_id) REFERENCES accounts(id)
) ENGINE=InnoDB;
你有错误吗?什么错误? – Barmar 2014-09-11 05:14:27
第一个只是语法不正确,请检查MySQL手册。 'MODIFY columnname'后面必须有列定义,而不是外键定义。对于第二个错误,这里还有很多其他问题可以解释导致错误150的原因。有许多可能的原因,并且您没有提供足够的信息来了解它是什么。所以做一个搜索。 – Barmar 2014-09-11 05:22:36