आपके अनुरोध को संसाधित करने में त्रुटि हुई है
SQLSTATE [HY000] [2002] ऐसी कोई फ़ाइल या निर्देशिका नहीं है
उपरोक्त त्रुटि हो रही है कृपया किसी ने मुझे इसे हल करने के लिए समाधान प्रदान करें।
आपके अनुरोध को संसाधित करने में त्रुटि हुई है
SQLSTATE [HY000] [2002] ऐसी कोई फ़ाइल या निर्देशिका नहीं है
उपरोक्त त्रुटि हो रही है कृपया किसी ने मुझे इसे हल करने के लिए समाधान प्रदान करें।
जवाबों:
यदि आपका सर्वर सूचीबद्ध app/etc/local.xml
है localhost
और यह त्रुटि Magento के त्रुटि लॉग में दिखाई देती है, लेकिन Magento अभी भी ठीक चल रहा है, तो mysql को पुनः आरंभ किया गया और सॉकेट /tmp/mysql.sock
या जो भी सॉकेट फ़ाइल my.cnf
अस्थायी रूप से गायब हो गई है।
क्योंकि यह गायब है, PDO mysql कनेक्टर रिपोर्ट SQLSTATE[HY000] [2002] No such file or directory
यदि आप लगातार इस त्रुटि को फेंक रहे हैं और अपवाद त्रुटि पृष्ठ से अलग Magento तक कोई पहुंच नहीं है, तो mysql पूरी तरह से दुर्घटनाग्रस्त हो गया है और आपको पता लगाने के लिए और mysql को पुनरारंभ करने के लिए अपने होस्टिंग प्रदाता की आवश्यकता है।
मेरे पास यही मुद्दा था, और मैंने नीचे चयन करने के लिए जो php का उपयोग करना है। /usr/local/etc/php/7.2/bin/php bin/magento setup:di:compile
आधिकारिक डॉक्स देखें: SQLSTATE [HY000] [2002] ऐसी कोई फ़ाइल या निर्देशिका नहीं
यह आमतौर पर वेब सर्वर की तुलना में PHP कमांड लाइन द्वारा उपयोग किए जा रहे PHP के एक अलग उदाहरण के कारण होता है। विशेष रूप से, mysql.sock
अगर यह मामला है तो इसे गलत माना जा सकता है।
यह निर्धारित करने के लिए कि आप PHP के एक उदाहरण का उपयोग कर रहे हैं या नहीं:
निम्नलिखित कमांड दर्ज करें:
php -i | grep 'php.ini'
यह PHP कमांड-लाइन इंटरफेस (सीएलआई) द्वारा उपयोग की जाने वाली सेटिंग्स को निर्धारित करता है। ध्यान दें कि कहां php.ini
स्थित है।
phpinfo.php
अपने वेब सर्वर पर सेट करें।phpinfo.php
से एक के साथ php -i
।phpinfo.php
php.ini
आपके वेब सर्वर द्वारा उपयोग की गई फ़ाइल दिखाता है। यदि यह PHP के व्हाट्सएप से अलग है php.ini
, तो आपको सभी PHP सेटिंग्स को PHP CLI और वेब सर्वर दोनों के अनुरूप बनाना होगा।
अतिरिक्त विवरण के लिए, अपने वेब सर्वर के साथ दिए गए प्रलेखन से परामर्श करें।
मेरे पास शेल के माध्यम से PHP के कई संस्करण उपलब्ध हैं - टाइपिंग php और दबाने वाला टैब दिखाता है जिनके बारे में मेरे स्वतः पूर्ण लोगों को पता है।
मेरे लिए, PHP 5.4, 5.5 और 5.6 सभी ठीक काम कर रहे थे, लेकिन PHP 7 mysql.sock नहीं ढूंढ रहा था, और "SQLSTATE [HY000] [2002] के साथ दुर्घटनाग्रस्त हो गया था " इस तरह की कोई फ़ाइल या निर्देशिका त्रुटि " इस प्रश्न में चर्चा नहीं की गई थी ।
# Prints [ok]
echo "<?php print(new mysqli('localhost', 'root', 'root', 'mysql') ? '[ok]' : '[error]').PHP_EOL; ?>" | php-5.6.20
# Prints [error] and shows a warning
echo "<?php print(new mysqli('localhost', 'root', 'root', 'mysql') ? '[ok]' : '[error]').PHP_EOL; ?>" | php-7.0.8
यह देखने के लिए कि आपके mysql सर्वर में कहां सॉकेट है, इस कमांड का उपयोग करें:
cat /etc/mysql/my.cnf | grep socket
मेरे मामले में, मेरी योनि प्रणाली में स्थापित पेरकोना मैसकल के साथ जुर्राब सॉकेट फ़ाइल यहाँ रहने के लिए हुई:
/var/run/mysqld/mysqld.sock
(ध्यान दें कि इसे mysqld कहा जाता है न कि केवल mysql )
मेरे पास चुनने के लिए php के कई संस्करण हैं और इन कमांडों ने मुझे दिखाया कि कौन से मुद्दे थे और कौन से ठीक थे:
मेरे लिए इसका उत्तर बस योनि-प्रवर्तक लिपि में कोड को /tmp/mysql.sock और /var/run/mysqld/mysqld.sock के बीच सम्मिलित करना था
if [ ! -L /tmp/mysql.sock ]; then
echo "Creating symbolic link for php 7 to connect to mysql.sock"
ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock
fi
नई सिमलिंक के साथ, अब से पहले दी गई परीक्षण स्क्रिप्ट PHP के सभी संस्करणों के लिए पूरी तरह से काम करती है और मैं 127.0.0.1 आईपी एड्रेस देने के बजाय अपने कोड में लोकलहोस्ट का उपयोग कर सकता हूं ।