Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Doctrine2 conversion error

What does this error from "Doctrine2 & Symfony2" mean?

Could not convert database value "" to Doctrine Type array

like image 892
Nizar B. Avatar asked Jan 11 '12 11:01

Nizar B.


2 Answers

You probably changed a field from type string to type array in your entity but already have data the database. It's failing at trying to convert an empty string from the database to an array.

If it's a development database, simply delete it and create it again, or just delete the offending rows. Or you could convert all the empty strings to a:0:{} (a serialized empty array).

UPDATE table SET column="a:0:{}" WHERE column = ""; 
like image 108
solarc Avatar answered Sep 24 '22 09:09

solarc


I would prefer not having everyone running SQL on their Production Database.

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

An easier solution in make the Column nullable, so after you run your "console doctrine:schema:update --force" the existing DB entries will get a NULL value, instead of an empty string. And doctrine can handle a converting the database value NULL to Doctrine Type array. It should be just a NULL array reference. And PHP empty() doesn't care if its zero sized array or NULL.

In MySQL, I get the following sql-dump:

ALTER TABLE my_table ADD my_new_column LONGTEXT DEFAULT NULL COMMENT '(DC2Type:array)' 
like image 22
William Choy Avatar answered Sep 23 '22 09:09

William Choy