Erreur de conversion Doctrine2

Que signifie cette erreur de "Doctrine2 & Symfony2"?

Impossible de convertir la valeur "" de la base de données en tableau de type Doctrine

32
demandé sur Niels 2012-01-11 15:22:26

3 réponses

Vous avez probablement changé un champ de type string à type array dans votre entité mais avez déjà des données dans la base de données. Il échoue à essayer de convertir une chaîne vide de la base de données en un tableau.

S'il s'agit d'une base de données de développement, supprimez-la simplement et créez-la à nouveau, ou supprimez simplement les lignes incriminées. Ou vous pouvez convertir toutes les chaînes vides en a:0:{} (Un tableau vide sérialisé).

UPDATE table SET column="a:0:{}" WHERE column = "";
70
répondu solarc 2012-01-11 13:16:47

Je préférerais que TOUT LE MONDE n'exécute pas SQL sur leur base de données de Production.

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

Une solution plus facile pour rendre la colonne nullable, donc après avoir exécuté votre "console doctrine: schema: update --force", les entrées de base de données existantes obtiendront une valeur NULL, au lieu d'une chaîne vide. Et doctrine peut gérer une conversion de la valeur de base de données NULL en tableau de type Doctrine. Ce devrait être juste une référence de tableau NULL. Et PHP empty () ne se soucie pas si son tableau de taille zéro ou NULL.

Dans MySQL, je reçois le SQL-dump suivant:

ALTER TABLE my_table ADD my_new_column LONGTEXT DEFAULT NULL COMMENT '(DC2Type:array)'
8
répondu William Choy 2014-10-01 19:36:38

Le type de colonne de vos tables db (par exemple: longtext) ne peut pas correspondre au type de colonne de Doctrine. modifier le type de colonne.

-3
répondu we3ew 2012-05-14 06:59:14