2012-01-11 26 views

उत्तर

69

आप शायद एक क्षेत्र प्रकार स्ट्रिंग से अपने इकाई में सरणी टाइप करने के लिए बदल गया है लेकिन पहले से ही डेटा डेटाबेस है। डेटाबेस से एक सरणी में एक खाली स्ट्रिंग को बदलने की कोशिश करने में यह असफल रहा है।

यदि यह एक विकास डेटाबेस है, तो बस इसे हटाएं और इसे फिर से बनाएं, या केवल अपमानजनक पंक्तियां हटाएं। या आप सभी खाली तारों को a:0:{} (एक धारावाहिक खाली सरणी) में परिवर्तित कर सकते हैं।

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

यह एक ही मुद्दा था:

MySQL में, मैं निम्नलिखित एसक्यूएल-डंप मिलता है। ऐसा करने के बाद मैंने एक ऐसी संस्था में एक फ़ील्ड जोड़ा जो पूर्ववर्ती डेटा था। सिद्धांत बुद्धिमानी से यह देखने के बजाय, शून्य को एक सरणी में बदलने की कोशिश करता है कि यह फ़ील्ड नल है, इसलिए इसे केवल खाली सरणी वापस करनी चाहिए;) एक धारावाहिक खाली सरणी में पूर्ववर्ती प्रविष्टियों को सेट करना पूरी तरह से काम करता है। +1 – Nick

+1

समाधान @solarc के लिए धन्यवाद - मुझे अपने 'भूमिका' फ़ील्ड के लिए अद्यतन खंड की आवश्यकता है जो मौजूदा प्रोजेक्ट से उपयोगकर्ताओं को आयात करने के बाद खाली था: http://blog.webdevilopers.net/fosuserbundle-login-error-could- नॉन-कन्वर्ट-डेटाबेस-वैल्यू-टू-डिक्ट्राइन-टाइप-एरे/ – webDEVILopers

+1

या आप फ़ील्ड को 'एन;' – Broncha

-3

आपकी डीबी टेबल कॉलम प्रकार (उदाहरण: लांगटेक्स्ट) सिद्धांत के कॉलम प्रकार से मेल नहीं खा सकता है। कॉलम प्रकार बदलें।

8

मैं अपने उत्पादन डेटाबेस पर एसक्यूएल चलाने वाले सभी को पसंद नहीं करना चाहूंगा।

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

मेकअप में एक आसान समाधान कॉलम नल, ताकि आप अपने चलाने के बाद "कंसोल सिद्धांत: स्कीमा: --force अद्यतन" मौजूदा डीबी प्रविष्टियों कोई रिक्त स्ट्रिंग के बजाय, एक शून्य मूल्य मिल जाएगा। और सिद्धांत डेटाबेस मूल्य नल से सिद्धांत प्रकार सरणी को परिवर्तित करने में संभाल सकता है। यह सिर्फ एक पूर्ण सरणी संदर्भ होना चाहिए। और PHP खाली() परवाह नहीं है अगर इसका शून्य आकार सरणी या नल।

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

के साथ शून्य पर सेट कर सकते हैं, हालांकि मेरे पास एक ही एसक्यूएल-डंप है, यह मेरे लिए काम नहीं करता है क्योंकि मुझे मिल रहा है एक ही त्रुटि – apfz

+0

अच्छी टिप! अफसोस की बात है, मैंने उपरोक्त समाधान की कोशिश की थी, और नल की जगह खाली स्ट्रिंग वाले कई क्षेत्रों के साथ अटक गया था। मैंने इस कथन को चलाकर उस समस्या को हल किया: ऐप/कंसोल सिद्धांत: क्वेरी: एसक्यूएल "अद्यतन << your_table_name >> SET <> = जहां कहीं भी <> = '' ' – qualbeen

संबंधित मुद्दे