2017-03-01 15 views
6

जोड़ने की कोशिश करता है मेरे पास सिद्धांत और MySQL 5.6 स्टैक के साथ एक ताजा सिम्फनी 2.8 स्थापना है।सिद्धांत स्कीमा अपडेट हमेशा नल

एक doctrine:schema:update --force को क्रियान्वित करने के बाद, मैं
Database schema updated successfully! "x" queries were executed

यहाँ मेरी समस्या यह है देख सकते हैं: यहां तक ​​कि अगर मैं निष्पादित यह कई बार, सिद्धांत हमेशा स्कीमा मतभेद हैं।

--dump-sql साथ

, मैं देख सकता हूँ कि इन सभी जिज्ञासाओं के से संबंधित हैं: स्ट्रिंग पर

  • जोड़ने नहीं NULL प्राथमिक कुंजी
  • जोड़ने datetime मैदान पर शून्य नहीं

हालांकि, जब मैं अपना डेटाबेस जांचता हूं, तो इन कॉलम में पहले से ही शून्य नहीं है।

class MyEntity 
{ 
    /** 
    * @ORM\Id 
    * @ORM\Column(type="string", length=5, name="cd_key") 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $code; 
    ... 

यहाँ एक SHOW CREATE TABLE my_entity; का परिणाम है::

CREATE TABLE `my_entity` (
    `cd_key` varchar(5) COLLATE utf8_unicode_ci NOT NULL, 
    `label` varchar(255) COLLATE utf8_unicode_ci NOT NULL, 
    `number` int(11) NOT NULL, 
    PRIMARY KEY (`cd_key`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ; 

और यहाँ क्वेरी सिद्धांत doctrine:schema:update कमांड के साथ निष्पादित करने के लिए कोशिश

यहाँ एक ही संपत्ति/स्तंभ पर एक उदाहरण है:

ALTER TABLE my_entity CHANGE cd_key cd_key VARCHAR(5) NOT NULL; 
  • मैं प्रत्येक कमांड निष्पादन के बीच अपने सिम्फनी कैश को साफ़ करता हूं।
  • मैं @ कॉलम एनोटेशन (0 अगर यह पहले से ही @Id के रूप में परिभाषित किया गया है) पर nullable=false जोड़ने का प्रयास करें, लेकिन कोई प्रभाव नहीं है।
  • doctrine:schema:validate कोई मैपिंग समस्या नहीं है (पाठ्यक्रम की सिंक को छोड़कर)
  • मैं पूर्ण डेटाबेस को छोड़ने और फिर से बनाने का प्रयास करता हूं, लेकिन कोई प्रभाव नहीं देता है।

कोई विचार?

+1

'nullable = false' को सेट नहीं करेगा, इसका मतलब है कि यह उस कॉलम के हिस्से के रूप में 'न्यूल' जोड़ता है? इसे 'nullable = true' में बदलना मूल्य को शून्य होने की अनुमति देगा। –

उत्तर

-1

मुझे एक ही समस्या का सामना करना पड़ा है। मेरे लिए SQL का उपयोग कर तालिका को हटाने और फिर DOCTRINE:SCHEMA:UPDATE --FORCE फिर से चल रहा है मेरे लिए काम किया।

ऐसा लगता है कि कुछ SQL अनुरोध मैन्युअल रूप से सिद्धांत को भ्रमित करते हैं।

यह कहकर, मुझे लगता है कि आपने @ORM\Table(name="my_entity") और @ORM\Entity(repositoryClass="myrepository") अपनी कक्षा परिभाषा पर रखा है;)।

आशा है कि इससे मदद मिलेगी।

+0

मैं तालिका (यहां तक ​​कि पूर्ण डेटाबेस) को हटाने का प्रयास करता हूं, लेकिन एक नए 'सिद्धांत: स्कीमा: अपडेट' के बाद, मुझे एक ही समस्या है। चलो, आपकी मदद के लिए धन्यवाद :) – n3k

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