【发布时间】:2012-02-26 11:26:15
【问题描述】:
下面的代码在执行时会产生以下错误:
致命错误:未捕获的异常“PDOException”,带有消息“SQLSTATE[23000]:违反完整性约束:1452 无法添加或更新子行:外键约束失败
$db->executeUpdate('CREATE TABLE submission_statuses (name VARCHAR(255) NOT NULL,
weight INT NOT NULL, PRIMARY KEY(name)) ENGINE = InnoDB');
$db->executeUpdate('ALTER TABLE submissions ADD CONSTRAINT IDX_4
FOREIGN KEY (status) REFERENCES submission_statuses(name)');
$db->executeUpdate('CREATE INDEX IDX_4 ON submissions (status)');
这两个表都使用 InnoDB 引擎。
【问题讨论】:
-
这与错误无关,但您应该知道没有必要为外键列添加索引。从 MySQL 4.1.2 开始,如果索引不存在,创建外键约束会自动创建索引。
标签: mysql alter-table