2011-01-11 14 views
15

का उपयोग कर स्थानीय होस्ट करने के लिए कनेक्ट नहीं कर सकता कि मैं इस के लिए नया हूँ तो शायद गलत शब्दावली है लेकिन जब मैं निम्न स्क्रिप्ट चलाएँ:पायथन के MySQLdb

File "/Library/Python/2.6/site-packages/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg/MySQLdb/__init__.py", line 81, in Connect 
    return Connection(*args, **kwargs) 
    File "/Library/Python/2.6/site-packages/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg/MySQLdb/connections.py", line 187, in __init__ 
    super(Connection, self).__init__(*args, **kwargs2) 
_mysql_exceptions.OperationalError: (2002, "Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)") 
:

import MySQLdb 

conn = MySQLdb.connect (host = 'localhost', 
    user = 'erin', 
    passwd = 'erin', 
      db = 'sec') 

मैं त्रुटि मिलती है

उस निर्देशिका में mysql.sock नामक कोई फ़ाइल नहीं है, लेकिन मुझे नहीं पता कि सॉकेट क्या है या MySQLdb मॉड्यूल का उपयोग करके इसके लिए सही स्थान कैसे निर्दिष्ट करें।

+0

त्रुटि संदेश में त्रुटि कोड (2) पर ध्यान दिए जाने पर आप अधिक समय बचा सकते हैं। 2 का अर्थ है फ़ाइल नहीं मिली: # perror 2 ओएस त्रुटि कोड 2: ऐसी कोई फ़ाइल या निर्देशिका – akuzminsky

उत्तर

5

आपकी mysql स्थापना शायद सॉकेट को कहीं और रखती है। आप इसे अपनी mysql conf फ़ाइलों में कॉन्फ़िगर कर सकते हैं।

आप इस समान पद की जाँच करने के लिए चाहते हो सकता है: Installing mysql on leopard: "Can't connect to local MySQL server through socket"

23

अगर आपके mysql सॉकेट /tmp/mysql.sock में नहीं रखा गया है, आप इसके साथ

conn = MySQLdb.connect (unix_socket = 'path_to_your_socket', host = 'localhost', user = 'erin', passwd = 'erin', db = 'sec') 

संपादित निर्दिष्ट कर सकते हैं: MAMP के लिए मैकॉक्स पर mysql सॉकेट पथ /Applications/MAMP/tmp/mysql/mysql.sock

+0

मुझे अपनी सॉकेट कैसे मिलती है? आपके शेल में 'mysql_config --socket' का उपयोग करके – erin

+2

करना चाहिए, या/path/to/mysql/bin/mysql_config अगर आपने इसे/opt या कुछ – roman

+0

में स्थापित किया है तो मुझे खेद है यदि मुझे अनुवर्ती प्रश्न पूछना नहीं है - अगर यह बुरा शिष्टाचार है तो बस मुझे अनदेखा करें। जब मैं mysql_config टाइप करता हूं - प्रतिक्रिया है '/tmp/mysql.sock' – erin

34

जैसे कुछ होना चाहिए, मैंने अपने होस्ट को "लोकलहोस्ट" के बजाय "127.0.0.1" पर सेट करके इसे हल करने में कामयाब रहा है।

+0

क्या आपको कभी पता चला कि यह क्यों था? यह भी मेरे लिए काम किया। – johnharris85

+7

यह काम करता है क्योंकि जब आप 'लोकलहोस्ट' निर्दिष्ट करते हैं, तो यह यूनिक्स सॉकेट के माध्यम से कनेक्ट करने का प्रयास करता है, जबकि जब आप '127.0.0.1' से कनेक्ट होते हैं तो यह मानक टीसीपी/आईपी के माध्यम से कनेक्ट करने का प्रयास करता है। हालांकि, अगर आप 'लोकलहोस्ट' निर्दिष्ट करते हैं, तो यह डिफ़ॉल्ट '/ tmp/mysql.sock' का उपयोग करेगा जबतक कि आप अन्यथा निर्दिष्ट न करें। – daviewales

+1

एफ *** वाईए! धन्यवाद मैट। मैं 3 दिनों के लिए इस पर फंस गया था और आप अंतिम समाधान – IdeoREX

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