我刚修改了我的一个实体来设置一个可缓冲的字段。
这是我添加到我的实体的代码
/**
* @var string
*
* @Gedmo\Slug(fields={"name"}, updatable=false)
* @ORM\Column(name="slug", type="string", length=255, unique=true)
*/
private $slugEn;
然后我使用了控制台命令doctrine:generate:entities
和doctrine:schema:update --force
但是当我使用它时,控制台会返回错误消息:
[PDOException] SQLSTATE [23000]:完整性约束违规:1062重复条目''关键' UNIQ_70F2BD0F989D9B62'
我知道,强制修复是截断数据库并创建另一个时间但我需要修复它而不截断。
我该如何解决?
答案 0 :(得分:1)
我可以看到几种可能的解决方案,具体取决于现有实体的类型和数量。
确保您没有清空“名称”字段。 slug是从name生成的,你得到的错误是因为你有几个“name”为空的实体。
使用多个字段构建slug,例如“id”所以你要确保它始终有效且始终是唯一的。
使用自定义方法创建在提供的名称为空时创建随机字符串的slug。
答案 1 :(得分:0)
您可以暂时禁用UniqueKey检查。
在MySQL中,您将使用:
SET UNIQUE_CHECKS=0;
SET FOREIGN_KEY_CHECKS=0;
//做东西
SET UNIQUE_CHECKS=1;
SET FOREIGN_KEY_CHECKS=1;
这些是简单的sql语句,可以这样执行。
无法保证数据丢失或丢失有效的引用和约束。