Php 数据已存在时的唯一索引
当我想添加一对一映射的新列时,我遇到了麻烦。它在该列上创建唯一索引,并且在执行SQL时显然失败了,因为该表已经包含行。删除开发数据库中的数据不是问题,但它将位于生产数据库中 以下是SQL的外观:Php 数据已存在时的唯一索引,php,symfony,doctrine,migration,unique,Php,Symfony,Doctrine,Migration,Unique,当我想添加一对一映射的新列时,我遇到了麻烦。它在该列上创建唯一索引,并且在执行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
$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)');
在这种情况下,我该怎么办?我认为问题可能是由于设置id列上的NOTNULL约束造成的 你必须:
您的SF2或Mysql错误是什么?我认为问题可能是您对settings\u id列的notnull约束造成的。您可能要删除此约束,更新数据库字段,然后设置非空约束。很抱歉,我忘记了设置错误消息,这里是:迁移20150301104253在执行过程中失败。错误执行“ALTER TABLE program ADD CONSTRAINT FK_92ED778459949888外键(设置\u id)引用程序\u设置(id)”时发生异常:SQLSTATE[23000]:完整性约束冲突:1452无法添加或更新子行:外键约束失败(
lightebody_dev
sql-580_4443
,约束FK_92ED778459949888
外键(settings_id
)参考程序设置
(id
)