2015-07-03 102 views
0

我刚刚修改了其中一个实体来设置可粘住的字段。Symfony2 Doctrine 1062重复条目

这是我加入到我的实体

/** 
* @var string 
* 
* @Gedmo\Slug(fields={"name"}, updatable=false) 
* @ORM\Column(name="slug", type="string", length=255, unique=true) 
*/ 
private $slugEn; 

然后我用的控制台命令doctrine:generate:entitiesdoctrine:schema:update --force的代码,但是当我用它,控制台返回我这个错误消息:

[PDOException] SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '' for key 'UNIQ_70F2BD0F989D9B62'

我知道,强制修复是截断数据库并创建另一个时间,但我需要修复它没有截断。

那我该如何解决呢?

回答

1

我可以看到几种可能的解决方案,取决于现有实体的类型和数量。

  1. 确保您没有空的“名称”字段。 slu is是从名称生成的,并且您得到的错误是因为您有几个“名称”为空的实体。

  2. 使用多个字段来构建slu,,例如, “id”,所以你要确保它始终有效并且始终是唯一的。

  3. 当提供的名称为空时,使用自定义方法创建创建随机字符串的段落。

+0

你说得对,我必须让该字段的“名称”不为空。有用。非常感谢! –

0

您可以暂时禁用您的UniqueKey检查。

在MySQL中,您将使用:

SET UNIQUE_CHECKS=0; 
SET FOREIGN_KEY_CHECKS=0; 

//做的东西

SET UNIQUE_CHECKS=1; 
SET FOREIGN_KEY_CHECKS=1; 

这些都是简单的SQL语句,可以这样来执行。

不保证数据丢失或丢失有效的引用和约束。

相关问题