2011-01-24 9 views
11

का उपयोग कर एक पीडीओ त्रुटि आ रही है जब php symfony doctrine:insert-sql
त्रुटि मैं मिलता है की कोशिश कर रहा:
पीडीओ कनेक्शन त्रुटि सिम्फोनी और MAMP

 
Warning: PDO::__construct(): [2002] Connection refused (trying to connect via tcp://127.0.0.1:3306) in /Users/johannes/Programmering/PHP/htdocs/symfony/sfprojects/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php on line 470 

databases.yml

 
    all: 
    doctrine: 
    class: sfDoctrineDatabase 
    param: 
     dsn: mysql:host=127.0.0.1;dbname=jobeet; 
     username: root 
     password: root 

एक mysql -u root -p jobeet कर "रूट" के साथ पासवर्ड मुझे एक्सेस देता है, इसलिए कोई समस्या नहीं है। और हाँ, मेरे द्वारा चलाए जाने वाले MySQL जो एमएएमपी है।

किसी भी मदद के लिए धन्यवाद।

+0

तुम सच में इस हिस्से की ज़रूरत है? '; mysql: unix_socket =/अनुप्रयोग/एमएएमपी/टीएमपी/mysql/mysql.sock' –

+0

मुझे – Johannes

+0

के साथ या बिना त्रुटि मिलती है यह कहना चाहता था कि स्थानीयहोस्ट को 127.0.0.1 में बदलना तय करें (मैं xampp का उपयोग कर रहा हूं) – Marin

उत्तर

7

MAMP डिफ़ॉल्ट रूप से TCP कनेक्शन की अनुमति नहीं है। आप या तो इसे चालू या सॉकेट का उपयोग कर सकते हैं।

अपने डीएसएन को @Tom के रूप में बदलना आपके मुद्दों को ठीक करना चाहिए। 127.0.0.1 के बजाय लोकलहोस्ट का उपयोग करके अजीब है लेकिन यह बनाता है कि mysql सॉकेट के माध्यम से जुड़ता है।

http://dev.mysql.com/doc/refman/5.0/en/connecting.html:

यूनिक्स पर, MySQL कार्यक्रमों मेजबान नाम का इलाज स्थानीय होस्ट विशेष रूप से, एक तरह से संभावना है कि आप अन्य नेटवर्क आधारित कार्यक्रमों की तुलना में उम्मीद क्या से अलग है। लोकहोस्ट से कनेक्शन के लिए, MySQL प्रोग्राम यूनिक्स सॉकेट फ़ाइल का उपयोग करके स्थानीय सर्वर से कनेक्ट करने का प्रयास करते हैं। यह तब भी होता है जब एक --port या -P विकल्प को पोर्ट नंबर निर्दिष्ट किया गया है। यह सुनिश्चित करने के लिए कि क्लाइंट स्थानीय सर्वर पर एक टीसीपी/आईपी कनेक्शन बनाता है, 127.0.0.1 का होस्ट नाम मान निर्दिष्ट करने के लिए --host या -h का उपयोग करें, या स्थानीय सर्वर का आईपी पता या नाम निर्दिष्ट करें। आप - प्रोटोकॉल = टीसीपी विकल्प का उपयोग कर द्वारा स्थानीयहोस्ट के लिए भी कनेक्शन प्रोटोकॉल निर्दिष्ट कर सकते हैं।

+0

ठीक है, मुझे लगता है कि मेरा जवाब और @ टॉम दोनों वैध हैं। यह सिर्फ आपको एमएएमपी के लिए कुछ अतिरिक्त विन्यास करने की जरूरत है। आपको "ऐसी कोई फ़ाइल या निर्देशिका नहीं है" संदेश मिला क्योंकि एमएएमपी एक गैर-डिफ़ॉल्ट स्थान में सॉकेट बचाता है। –

+1

अच्छा, 127.0.0.1 के बजाय 'लोकलहोस्ट' का उपयोग करके चाल चल रही थी; स्थानीय लोगों के बाहर एक्सेस को खोलने की कोई ज़रूरत नहीं है @ जेम्स सुझाव –

1

सही दिखता है। यहाँ एक काम databases.yml मैं उपयोग कर रहा हूँ से सटीक बराबर होगा, मामले में यह किसी काम के है:

dsn: 'mysql:host=localhost;dbname=jobeet' 
+0

मेजबान को 127.0.0.1 से स्थानीयहोस्ट में बदल रहा है, मुझे यह त्रुटि No such file or directory (trying to connect via unix:///var/mysql/mysql.sock) Johannes

3

मुझे सिम्फनी में मेरी टेबल बनाने और एमएएमपी का उपयोग करने का प्रयास करते समय भी वही त्रुटि थी। मैं अपने dsn लाइन बदल रहा है, databases.yml फ़ाइल में, निम्न के द्वारा समस्या का समाधान हो:

dsn: 'mysql:host=localhost;dbname=jobeet;unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock' 
13

MAMP प्रो 2.x
मैं बस अनचेक करके इस और इसी तरह के कई मुद्दों को हल करने में सक्षम था एमएएमपी नियंत्रण कक्ष पर MySQL prefs में "केवल स्थानीय पहुंच की अनुमति दें"।

enter image description here

MAMP प्रो 3।एक्स
रूप Kendrick ने कहा: enter image description here

+0

धन्यवाद, यह मेरे लिए काम किया –

+0

उसकी मुझे +1 –

+0

के लिए काम किया यह काम किया! +1! – Stormsson