2013-01-17 14 views
9

समस्या

हाय, मैं "मी एक Symfony2 परियोजना पर एक दोस्त के साथ काम कर वह एक Windows आधारित कंप्यूटर पर काम कर रहा है और मैं अपने Mac पर हूँ हम सेटअप प्रोजेक्ट और अपने कंप्यूटर पर डेटाबेस मॉडल/इकाइयां (कोड पहले) बनाया। अब मैं इस पर काम करना शुरू करना चाहता था इसलिए हमने अपने लोकहोस्ट में एसक्यूएल गूंगा किया। मैंने अपनी सेटिंग्स से मेल खाने के लिए पैरामीटर.मिल संपादित किया। सर्वर से कनेक्ट कर सकते हैं लेकिन जब मैं एक पृष्ठ जहाँ डेटाबेस प्रयोग किया जाता है को खोलने का प्रयास मैं इस त्रुटि मिलती है:।Symfony2: आधार तालिका या दृश्य नहीं मिला:।। 1146

An exception occurred while executing 'SELECT t0.id AS id1, t0.name AS name2, t0.bigimage AS bigimage3, t0.smallimage AS smallimage4, t0.info AS info5, t0.city_id AS city_id6 FROM District t0':

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'socialgeogroep6.District' doesn't exist 500 Internal Server Error - DBALException 1 linked Exception: PDOException »

बस स्पष्ट होना , पृष्ठ अपने कंप्यूटर पर सामान्य चल रहा है; वह डेटा प्राप्त करता है जैसा कि होना चाहिए।


प्रश्न

क्या समस्या हो सकती है? मैंने अपने PHPmyAdmin में बार-बार देखा और डेटाबेस सभी फ़ील्ड और डेटा के साथ है ...
(स्क्रीन: http://gyazo.com/4a0e5f1ee6b1e29d2d277df5fc0d8aac) मैं वास्तव में कल्पना नहीं कर सकता कि समस्या क्या है।

मुझे उम्मीद है कि कोई हमारी मदद कर सकता है!

+0

तो, स्पष्ट होना, तो आपका ब्राउज़र वेब सर्वर पर कनेक्ट हो रहा है आपकी मशीन पर जो बदले में आपकी मशीन पर आरडीबीएमएस से कनेक्ट करने का प्रयास कर रहा है (वही आरडीबीएमएस जिसमें वह phpMyAdmin स्क्रीनशॉट संबंधित है)? कृपया जब आप उस त्रुटि को देखते हैं, और आपके एप्लिकेशन में डेटाबेस कॉन्फ़िगरेशन/कनेक्शन पैरामीटर ब्राउज़र पता बार में प्रदर्शित यूआरएल की पुष्टि करें। – eggyal

+0

हां, यह परियोजना स्थानीयहोस्ट पर एमएएमपी के साथ चल रही है। (मेरे मैक पर, वह एक्सएएमपी चला रहा है)। डेटाबेस एक स्थानीय mySQL डेटाबेस है। –

+0

आपकी MySQL स्थापना ['lower_case_table_names'] (http://dev.mysql.com/doc/en/server-system-variables.html#sysvar_lower_case_table_names) सेटिंग क्या है? 'Var_case_table_names''' की तरह वैरिएबल दिखाएं। और आपके डेटा फाइलों को किस फाइल सिस्टम पर संग्रहीत किया जाता है? – eggyal

उत्तर

13

यह एक मामला मुद्दा है। आपके डेटाबेस पर district तालिका है, लेकिन सिद्धांत District तालिका के लिए पूछ रहा है।

आपको निम्न केस तालिका नाम का उपयोग करने के लिए सिद्धांत को कॉन्फ़िगर करना चाहिए। ऐसा करने के तरीके के बारे में जानने के लिए सिद्धांत दस्तावेज http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/basic-mapping.html#persistent-classes देखें।

+0

MySQL केस संवेदनशीलता फाइल सिस्टम का पालन करती है ... और एचएफएस + (आमतौर पर) केस असंवेदनशील है। – eggyal

+0

यह चाल है! मैंने यह भी पढ़ा कि @eggyal ने कहा कि इससे मैक पर कोई फर्क नहीं पड़ता है, इसलिए हमने सोचा नहीं कि यह मुद्दा होगा। लेकिन यह स्पष्ट रूप से किया था। मदद के लिए वेनु के साथ-साथ और उदासीन धन्यवाद! –

1

तालिका नाम केस मुद्दा

socialgeogroep6.District 

यह socialgeogroep6.district स्क्रीनशॉट के अनुसार होना चाहिए। इकाई एनोटेशन की जांच करें।

+0

MySQL केस संवेदनशीलता फाइल सिस्टम का पालन करती है ... और एचएफएस + (आमतौर पर) केस असंवेदनशील है। – eggyal

4

मुझे बिल्कुल वही समस्या थी क्योंकि मैं विंडोज़ पर कोड लिख रहा हूं और मुझे लिनक्स पर तैनाती की आवश्यकता है।

समाधान config.yml लाइन में जोड़ने के लिए है:

doctrine: 
    orm: 
     naming_strategy: doctrine.orm.naming_strategy.underscore 
+0

यह मेरे साथ काम नहीं किया। – Abdel5

+0

यह विंडोज़ से लिनक्स (क्लाउड 9 कॉन्फ़िगरेशन) में कॉन्फ़िगर करने का प्रयास करते समय मेरे लिए काम करता था। धन्यवाद –

1

सावधानी का एक शब्द है: इस समाधान को पढ़ने से पहले। यह उन लोगों के लिए सख्ती से एक समाधान है जो ढांचे को स्थापित करने की कोशिश कर रहे हैं।

मुझे लगता है कि आप अभी कोशिश कर रहे हैं, आप क्या कर सकते हैं, डेटाबेस छोड़ें और फिर सबकुछ फिर से शुरू करें।

- mysql -uroot -proot 
- show databases; 
- drop database <dbname>; 

फिर, तालिकाएं फिर से बनाएं।

- app/console doctrine:database:create 
- app/console doctrine:schema:create 

सावधानी का एक शब्द है यह उत्पादन वातावरण में यह करने के लिए यदि आप पहले से ही अपने नियंत्रक बनाया है और डेटा पहले से ही से भर जाता है एक बहुत ही खराब विचार हो सकता है।

1

यह मेरे सिम्फनी 2.7 में काम करता है। बस कॉन्फ़िगरेशन में डाल दिया।YML:

doctrine: 
    # ... 
    orm: 
     # ... 
     entity_managers: 
      default: 
       naming_strategy: doctrine.orm.naming_strategy.underscore 
0

आप Orm का उपयोग कर रहे हैं, तो आप इसे इस

District.orm.yml की तरह सेट कर सकते हैं

Project\Bundle\DuterteBundle\Entity\Vp: 
    type: entity 
    table: district//note the lowercase 
    repositoryClass: Project\Bundle\DuterteBundle\Repository\VpRepository