Che cosa significa questo errore di "Doctrine2 & Symfony2"?Errore di conversione di Doctrine2
Impossibile convertire il valore del database "" per Dottrina tipo array
Che cosa significa questo errore di "Doctrine2 & Symfony2"?Errore di conversione di Doctrine2
Impossibile convertire il valore del database "" per Dottrina tipo array
Probabilmente cambiato un campo da tipo stringa al tipo di matrice nella vostra entità, ma già i dati nel database. Sta fallendo nel tentativo di convertire una stringa vuota dal database in un array.
Se si tratta di un database di sviluppo, è sufficiente eliminarlo e crearlo di nuovo, o semplicemente eliminare le righe offensive. Oppure puoi convertire tutte le stringhe vuote in a:0:{}
(una matrice vuota serializzata).
UPDATE table SET column="a:0:{}" WHERE column = "";
il tipo di colonna delle tabelle DB (ad esempio: longtext) non può corrispondere al tipo di colonna di Doctrine. cambia tipo di colonna.
Preferirei non avere tutti gli utenti che eseguono SQL nel proprio database di produzione.
@ORM\Column(type="array", nullable=TRUE)
una soluzione più facile nel make il nullable Colonna, così dopo si esegue il "console dottrina: schema: update --force" le voci DB esistenti avranno un valore NULL, invece di una stringa vuota. E la doctrine può gestire una conversione del valore del database NULL nell'array Doctrine Type. Dovrebbe essere solo un riferimento di array NULL. E PHP empty() non interessa se il suo array di dimensioni zero o NULL.
In MySQL, ottengo il seguente sql-dump:
ALTER TABLE my_table ADD my_new_column LONGTEXT DEFAULT NULL COMMENT '(DC2Type:array)'
sebbene io abbia lo stesso sql-dump, questo non ha funzionato per me visto che sto ottenendo lo stesso errore. – apfz
Un buon consiglio! Purtroppo, avevo già provato la soluzione di cui sopra, e sono rimasto bloccato con molti campi con stringa vuota anziché NULL. Ho risolto il problema eseguendo questa istruzione: dottrina app/console: query: sql "UPDATE << your_table_name >> SET <
avuto questo stesso problema. Si è verificato dopo aver aggiunto un campo a un'entità con dati preesistenti. Doctrine prova a convertire NULL in un array, invece di vedere intelligentemente che il campo è NULL, quindi dovrebbe semplicemente restituire un array vuoto;) Impostare le voci preesistenti su un array vuoto serializzato ha funzionato perfettamente. +1 – Nick
Grazie per la soluzione @solarc - Avevo bisogno della clausola UPDATE per il mio campo 'roles' che era vuoto dopo aver importato utenti da un progetto esistente: http://blog.webdevilopers.net/fosuserbundle-login-error-could- not-convert-database-value-to-doctrine-type-array/ – webDEVILopers
OPPURE puoi impostare il campo a null con 'N;' – Broncha