2012-01-11 31 views

cevap

69

Muhtemelen varlıktaki diziyi yazmak için dize türünde bir alan değiştirdi ama zaten veriler veritabanına sahiptir. Boş bir dizeyi veritabanından bir diziye dönüştürmeye çalışmak başarısız oluyor.

Eğer bir geliştirme veritabanıysa, onu silin ve yeniden oluşturun ya da sadece rahatsız edici satırları silin. Veya tüm boş dizeleri a:0:{} (serileştirilmiş boş bir diziye) dönüştürebilirsiniz.

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

: MySQL

, şu sql-dökümü almak. Önceden varolan verileri olan bir Varlığa bir alan ekledikten sonra meydana geldi. Doktrin, NULL'yi bir diziye dönüştürmeye çalışır. Bunun yerine, alanın NULL olduğunu görmek yerine, boş bir diziyi döndürmesi gerekir;) Önceden hazırlanmış girdileri, serileştirilmiş bir boş diziye ayarlamak, mükemmel bir şekilde çalıştı. +1 – Nick

+1

@solarc çözümü için teşekkürler - Mevcut bir projeden kullanıcıları aldıktan sonra boş olan "rollerim" alanının UPDATE maddesine ihtiyacım vardı: http://blog.webdevilopers.net/fosuserbundle-login-error-could- değil-convert-veritabanı-değeri-doctrine-tip-dizi/ – webDEVILopers

+1

VEYA aynı sql-dump sahip olsa bile n = 0; – Broncha

-3

sizin db tablo sütun tipi (örn: longtext) doktrin sütun türünü aynı olamaz. sütun değiştir.

8

SQL'i Üretim Veritabanında çalıştırmayı tercih etmem.

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

makyajda da daha kolay bir çözüm Sütun null, böylece "konsol doktrini: şema: güncelleştirme --force" çalıştırdıktan sonra varolan DB girişleri yerine boş bir dize, bir NULL değeri alacak. Ve doktrin, NULL ve Doctrine Type dizisinin veritabanı değerini dönüştürmeyi başarabilir. Sadece bir NULL dizi referansı olmalıdır. Ve PHP boş() sıfır boyutlu dizisi veya NULL ise umurumda değil. Bu aynı sorunu vardı

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

ile null alanı ayarlayabilirsiniz, bu benim için işe yaramadı aynı hata. – apfz

+0

Güzel bahşiş! Ne yazık ki, yukarıdaki çözümü denedim ve NULL yerine boş bir dizeyle çok fazla alana sıkışmıştım. Bu bildirimi çalıştırarak bu sorunu çözdüm: app/console doctrine: query: sql "UPDATE << your_table_name >> SET <> = NULL <> = ''" – qualbeen