【发布时间】:2015-03-01 10:34:39
【问题描述】:
当我想添加一对一映射的新列时遇到了麻烦。它在该列上创建唯一索引,并且在执行 SQL 时显然失败,因为该表已经包含行。删除开发数据库中的数据不是问题,但它将在生产数据库中。
这就是 SQL 的样子:
$this->addSql('CREATE TABLE program_settings (id INT AUTO_INCREMENT NOT NULL, booking_cancel VARCHAR(155) NOT NULL, booking_ahead VARCHAR(155) NOT NULL, created_at DATETIME NOT NULL, modified_at DATETIME NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB');
$this->addSql('ALTER TABLE program ADD settings_id INT NOT NULL AFTER studio_id');
$this->addSql('ALTER TABLE program ADD CONSTRAINT FK_92ED778459949888 FOREIGN KEY (settings_id) REFERENCES program_settings (id)');
$this->addSql('CREATE UNIQUE INDEX UNIQ_92ED778459949888 ON program (settings_id)');
这种情况我该怎么办?
【问题讨论】:
-
您的 SF2 或 Mysql 错误是什么?我认为问题可能来自您对 settings_id 列的 NOT NULL 约束。您可能想要删除此约束,更新您的数据库字段,然后放置您的 NOT NULL 约束。
-
对不起,我忘记输入错误信息了,这里有:执行期间迁移 20150301104253 失败。错误执行“ALTER TABLE program ADD CONSTRAINT FK_92ED778459949888 FOREIGN KEY (settings_id) REFERENCES program_settings (id)”时发生异常:SQLSTATE [23000]:完整性约束违规:1452 无法添加或更新子行:外键约束失败(@ 987654322@.
#sql-580_4443,约束FK_92ED778459949888外键(settings_id)参考program_settings(id))
标签: php symfony doctrine migration unique