Подтвердить что ты не робот

Ошибка преобразования Doctrine2

Что означает эта ошибка от "Doctrine2 и Symfony2"?

Не удалось преобразовать значение базы данных "" в массив типа Doctrine

4b9b3361

Ответ 1

Вероятно, вы изменили поле из строки типа, чтобы набрать массив в вашей сущности, но уже имеете данные в базе данных. Это не удается при попытке конвертировать пустую строку из базы данных в массив.

Если это база данных разработки, просто удалите ее и создайте снова или просто удалите оскорбительные строки. Или вы можете преобразовать все пустые строки в a:0:{} (сериализованный пустой массив).

UPDATE table SET column="a:0:{}" WHERE column = "";

Ответ 2

Я бы предпочел, чтобы у всех не работало SQL в своей производственной базе данных.

 @ORM\Column(type="array", nullable=TRUE)

Более простое решение для того, чтобы сделать столбец "nullable", поэтому после запуска "доктрины консоли: схема: обновление - сила" существующие записи базы данных получат значение NULL вместо пустой строки. И доктрина может обрабатывать преобразование значения базы данных NULL в массив типа Doctrine. Это должно быть просто ссылка NULL. И PHP empty() не волнует, если его массив нулевого размера или NULL.

В MySQL я получаю следующий sql-dump:

ALTER TABLE my_table ADD my_new_column LONGTEXT DEFAULT NULL COMMENT '(DC2Type:array)'

Ответ 3

Тип столбца таблицы db (например: longtext) не может соответствовать типу столбца Doctrine. изменить тип столбца.