2012-12-02 16 views
8

किसी को निम्नलिखित सिद्धांत स्कीमा मान्यता त्रुटि संदेश व्याख्या कर सकते हैं के साथ सिंक में नहीं है कृपया:डाटाबेस विफल - डेटाबेस स्कीमा वर्तमान मैपिंग फ़ाइल

The error message returned by the schema validate function

यहाँ में प्रत्येक इकाई की YAML ORM परिभाषा है कई बहुत सारे रिश्तों ने documentation की धारा 5.9 के साथ इनलाइन बनाई।

Rep\Bundle\ProjectBundle\Entity\User: 
    type: entity 
    table: User 
    fields: 
     id: 
      id: true 
      type: integer 
      unsigned: true 
      nullable: false 
      generator: 
       strategy: AUTO 
     username: 
      type: string 
      length: 25 
      fixed: false 
      nullable: false 
     salt: 
      type: string 
      length: 32 
      fixed: false 
      nullable: false 
     password: 
      type: string 
      length: 40 
      fixed: false 
      nullable: false 
     email: 
      type: string 
      length: 60 
      fixed: false 
      nullable: false 
    manyToMany: 
     roles: 
      targetEntity: UserRole 
      inversedBy: users 
      joinTable: 
       name: UserRoleLookup 
       joinColumns: 
        user_id: 
         referencedColumnName: id 
       inverseJoinColumns: 
        user_role_id: 
         referencedColumnName: id 
    lifecycleCallbacks: { } 

और UserRole उलटा YAML विन्यास:

Rep\Bundle\ProjectBundle\Entity\UserRole: 
    type: entity 
    table: UserRole 
    fields: 
     id: 
      id: true 
      type: integer 
      unsigned: true 
      nullable: false 
      generator: 
       strategy: AUTO 
     name: 
      type: string 
      length: 50 
      fixed: false 
      nullable: false 
    manyToMany: 
     users: 
      targetEntity: User 
      mappedBy: roles 
    lifecycleCallbacks: { } 

यहाँ उपयोगकर्ता तालिका स्कीमा है:

CREATE TABLE `User` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT, 
    `username` varchar(25) COLLATE utf8_unicode_ci NOT NULL, 
    `salt` varchar(32) COLLATE utf8_unicode_ci NOT NULL, 
    `password` varchar(40) COLLATE utf8_unicode_ci NOT NULL, 
    `email` varchar(60) COLLATE utf8_unicode_ci NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 

UserRole तालिका स्कीमा:

CREATE TABLE `UserRole` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT, 
    `name` varchar(50) COLLATE utf8_unicode_ci NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 

और UserRoleLookup स्कीमा:

CREATE TABLE `UserRoleLookup` (
    `user_id` int(11) unsigned NOT NULL, 
    `user_role_id` int(11) unsigned NOT NULL, 
    PRIMARY KEY (`user_id`,`user_role_id`), 
    KEY `user_role_id` (`user_role_id`), 
    CONSTRAINT `userrolelookup_ibfk_2` FOREIGN KEY (`user_role_id`) REFERENCES `userrole` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, 
    CONSTRAINT `userrolelookup_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

आप देख सकते हैं, यह किसी विशेष उपयोगकर्ता भूमिका में एक उपयोगकर्ता की भूमिकाओं या उपयोगकर्ताओं का समूह हुक्म करने के लिए एक लुक-अप तालिका के साथ एक सुंदर साधारण सेटअप है। हालांकि, मुझे यह निराशाजनक सिंच त्रुटि मिल रही है। मैंने यहां कुछ भी नहीं पढ़ा है या ऑनलाइन जो किसी भी संक्षिप्त विवरण में इस प्रश्न का उत्तर देता है, मैं उम्मीद कर रहा था कि अगर कोई इस कॉन्फ़िगरेशन को छोड़ने और इस त्रुटि को अनदेखा करने के लिए सुरक्षित है तो कोई स्पष्टीकरण दे सकता है?

उत्तर

17

php bin/console doctrine:schema:update --dump-sql चल रहा है आपको अपने डीबी को डंप किए बिना एसक्यूएल में अंतर दिखाता है।

तुम भी परिवर्तन करने के लिए निम्न आदेश चला सकते हैं:

php bin/console doctrine:schema:update --force --full-database

symfony2 के लिए यह

php app/console doctrine:schema:update --force --full-database

+3

अच्छे विचार का उपयोग करके हमारे बारे में सोचेंगे। यह मेरे लिए काम किया। निश्चित रूप से कमांड "orm: schema: update" है यदि आप zf2 और doctrine/doctrine-orm-module –

+1

का उपयोग करते हैं, तो यह त्रुटि "द '--full-डेटाबेस' विकल्प मौजूद नहीं है।" (सिम्फनी 2.8.1) –

+0

ऐसा लगता है कि इसका नाम बदलकर 'अपूर्ण' किया गया था: https://github.com/doctrine/doctrine2/blob/b055d78ea19835fab563dfc234d4804a9d04966a/lib/Doctrine/ORM/Tools/Console/Command/SchemaTool/UpdateCommand। php –

5

यह आसान है: कुछ फ़ील्ड या रिलेशनशिप, या इकाई इत्यादि का अभी तक आपके डेटाबेस स्कीमा में कॉलम या टेबल के रूप में अनुवाद नहीं किया गया है। अपनी स्कीमा अपडेट करें और आप ठीक होंगे।

+0

मैं वर्तमान फेंक दिया हो सकता है तालिकाओं और symfony2 कंसोल सिद्धांत कमांड का उपयोग कर उन्हें फिर से उत्पन्न किया, और सत्यापन चरण पारित किया। स्कीमा असाइन किए गए आईडी फ़ील्ड के अलावा मुश्किल से भिन्न थे, जो बेवकूफ है - लेकिन कम से कम मेरी त्रुटि दूर हो जाती है। –

+0

यह पूरी तरह से सच नहीं है, उदाहरण के लिए उदाहरण के लिए जब एनोटेशन के साथ गलत गुणों को मिलाते हैं तो आपको यह त्रुटि हो सकती है। – COil

+0

@COil उस मामले में, '[मैपिंग]' वाली रेखा लाल है, है ना? '[डेटाबेस]' – greg0ire

2

इस में रुचि किसी के लिए, फिर से पैदा मेरी मेज स्कीमा उत्पादित निम्नलिखित लुक-अप स्कीमा:

CREATE TABLE `UserRoleLookup` (
    `user_id` int(11) NOT NULL, 
    `user_role_id` int(11) NOT NULL, 
    PRIMARY KEY (`user_id`,`user_role_id`), 
    KEY `IDX_4511E771A76ED395` (`user_id`), 
    KEY `IDX_4511E7718E0E3CA6` (`user_role_id`), 
    CONSTRAINT `FK_4511E7718E0E3CA6` FOREIGN KEY (`user_role_id`) REFERENCES `UserRole` (`id`), 
    CONSTRAINT `FK_4511E771A76ED395` FOREIGN KEY (`user_id`) REFERENCES `User` (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;\ 

मैं, लगता है के रूप में मैं कर सकते हैं symfony2-सिद्धांत बंडलों अहस्ताक्षरित पूर्णांकों का एक बड़ा प्रशंसक नहीं हैं मैंने पोस्ट की गई स्कीमा से थोड़ा बदलाव देखें। वैसे भी, समस्या हल हो गई।

+0

के साथ लाइन नहीं है, आपको मैन्युअल रूप से हस्ताक्षरित पूर्णांक जोड़ना होगा ... और यदि आपके पास कई संस्थाएं हैं, तो हाँ बहुत बुरा है, उम्मीद है कि वे बिना हस्ताक्षर किए गए int –

3
Symfony3 के लिए

था:

app/consolebin/console लिए बदल गया है, --full-database--complete

ताकि अंतिम आदेश हो जाएगा:

php bin/console doctrine:schema:update --force --complete --dump-sql 
0

php bin/कंसोल सिद्धांत: स्कीमा: अद्यतन --dump-एसक्यूएल यह काम करता है यह मेरी समस्या का समाधान होने

+0

कृपया इसे पहले देखें [कैसे जवाब दें] (https://stackoverflow.com/help/how-to-answer) –

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