【发布时间】:2014-09-11 05:08:01
【问题描述】:
我想更新一个当前是普通 INT(16) 的列,以便它引用另一个表上的 FK。我尝试了以下方法,但出现错误:
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;
【问题讨论】:
-
您遇到错误了吗?什么错误?
-
第一个只是语法错误,查看MySQL手册。
MODIFY columnname后面必须跟列定义,而不是外键定义。对于第二个错误,这里还有许多其他问题可以解释导致错误 150 的原因。有许多可能的原因,而您没有提供足够的信息来知道它是什么。所以请搜索一下。