Нарушение ограничений целостности Доктрина 2 и Symfony - PullRequest
2 голосов
/ 24 августа 2011

У меня есть какой-то текстовый конструктор, где вы можете добавлять блоки для создания вашего текста.Строительные блоки определены в базе данных, и когда вы добавляете 1 к вашему тексту, он сохраняется в сеансе (как вы их строите).

Но теперь, когда я пытаюсь сохранить сеанс в базе данных, яполучить:

Integrity constraint violation: 1062 Duplicate entry 'text' for key 'UNIQ_AA5F49C77153098'

Он хочет добавить существующее определение строительного блока, но оно уже определено.Сам сеанс сериализован.

Итак, шаги, которые я делаю для сохранения:

1) десериализовать (я также пытался объединить его, но это тоже не сработало).

2) сохранить в базе данных => ошибка

Ответы [ 3 ]

1 голос
/ 24 августа 2011

Вместо того, чтобы сохранять несериализованный объект напрямую, сделайте это: - десериализация объекта - получить объект из базы данных - обновить полученный объект значением несериализованного - сохранить найденный объект

Это работает?

0 голосов
/ 25 августа 2011

У меня была похожая проблема с FOSUserBundle: я не уверен, как переопределить конфигурацию отображения расширенного объекта (в моем случае поле email_canonical, которое не использовалось, но два пустых поля также вызвали нарушение целостности).

В итоге я вручную удалил ограничение в базе данных (и с доктриной app / console: schema: update --dump-sql только обновлял изменения с помощью команды SQL - за исключением ограничения UNIQUE)

Как указано futurecat: вам нужно, чтобы ваше текстовое поле было уникальным?

0 голосов
/ 24 августа 2011

Возможно, вы используете неправильный тип ассоциации для вашей модели. Я не помню точно, но Доктрина добавляет ограничения единственности к однонаправленным ассоциациям «многие ко многим» или «один к одному».

...