PDOException SQLSTATE[HY000] [2002] No such file or directory
خطای بالا زمانی رخ داد که بعد از مدتی بازی با وردپرس - مجبور شدم برگردم سراغ لاراول. نمیدونم چه بلایی سر تنظیمات mysql سیستمم آورده بودم اما در کل انگار mysql و php نمیتونستن به هم وصل بشن(جدایی نادر از سیمین)
پس دست به کار شدم و رفتم سراغ رفیقم به اسم stackoverflow و بعد از کلی بالا و پایین به جواب زیر رسیدم
جواب انتخابی برام من جواب نداد و بعد از بررسی جواب های موجود. به راه حل زیر رسیدم
۱- ترمینال یا cmd رو باز کردم و دستور زیر رو در اون نوشتم
mysql -u root -p
خب در این خط دارم سعی میکنم به mysql متصل بشم. اگر این خط خطا داد باید بگم که mysql شما قابلیت دسترسی عمومی رو نداره و باید در تنظیمات mamp یا xammp بهش دسترسی عمومی بدید. اگر همه چی خوب پیش بره ازتون رمز اتصال رو میخواد(کلمه root نام کاربری mysql به صورت پیش فرض هست)
۲- این قسمت رو توضیح نمیدم. فقط دستور زیر رو وارد کنید
mysql> show variables like '%sock%'
قرار شد توضیح ندم، چون خودمم نفهمیدم اما انگار داره دنبال یکسری متغییر میگرده که وظیفه شون نگهداری روش های دسترسی به mysql هست
۳- اگر مرحله قبل به خوبی پیش بره با جواب زیر رو به رو خواهید شد
+-----------------------------------------+-----------------+
| Variable_name | Value |
+-----------------------------------------+-----------------+
| performance_schema_max_socket_classes | 10 |
| performance_schema_max_socket_instances | 322 |
| socket | /tmp/mysql.sock |
+-----------------------------------------+-----------------+
خب، مقدار value ردیف آخر شامل مسیر اتصال socket به mysql هست. و روش استفاده از اون مثلا در لاراول به این صورت هست که در فایل .env خط زیر رو اضافی می کنید
DB_SOCKET=/tmp/mysql.sock
و تمام. برای لومن هم به همین شکل هست ولی برای nodejs باید از یک روش دیگه استفاده کنید که کمی پیچیده تر هست.
راستی شاید از خودتون بپرسید چرا با وجود جواب - باز منتشرش کردم؟؟؟ برای خودمم سئوال هست و به دنبال جوابش خواهم بود