Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 数据已存在时的唯一索引_Php_Symfony_Doctrine_Migration_Unique - Fatal编程技术网

Php 数据已存在时的唯一索引

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

当我想添加一对一映射的新列时,我遇到了麻烦。它在该列上创建唯一索引,并且在执行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)');

在这种情况下,我该怎么办?

我认为问题可能是由于设置id列上的NOTNULL约束造成的

你必须:

  • 添加不带NOT NULL约束的外键(设置\u id)
  • 使用值更新所有外部字段(设置\u id)
  • 使用NOTNULL约束更改外键(设置\u id)

  • 您的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