Terjadi kesalahan saat memproses permintaan Anda
SQLSTATE [HY000] [2002] Tidak ada file atau direktori tersebut
Mendapatkan kesalahan di atas tolong seseorang memberikan saya solusi untuk menyelesaikan ini.
Terjadi kesalahan saat memproses permintaan Anda
SQLSTATE [HY000] [2002] Tidak ada file atau direktori tersebut
Mendapatkan kesalahan di atas tolong seseorang memberikan saya solusi untuk menyelesaikan ini.
Jawaban:
Jika server Anda terdaftar dalam app/etc/local.xml
adalah localhost
dan kesalahan ini muncul di log kesalahan Magento, tetapi Magento masih berjalan ok, maka mysql telah dimulai kembali dan soket /tmp/mysql.sock
atau file soket apa pun yang diatur untuk my.cnf
sementara menghilang.
Karena tidak ada, konektor mysql PDO melaporkan SQLSTATE[HY000] [2002] No such file or directory
Jika Anda terus mendapatkan kesalahan ini dilemparkan dan tidak memiliki akses ke Magento selain dari halaman Kesalahan Pengecualian, maka mysql telah benar-benar macet dan Anda memerlukan penyedia hosting Anda untuk mencari tahu mengapa dan memulai kembali mysql.
Ini juga dapat terjadi jika sistem file Anda penuh ... df -j 1st ... tentu saja, sebagian besar Anda harus mendapat peringatan sebelum itu ...
mysqld tidak akan berjalan secara normal, dan akan berada dalam mode "aman"
HTH SNS
Saya memiliki masalah yang sama, dan saya gunakan di bawah ini untuk memilih php mana yang harus digunakan. /usr/local/etc/php/7.2/bin/php bin/magento setup:di:compile
Lihat dokumen resmi: SQLSTATE [HY000] [2002] Tidak ada file atau direktori tersebut
Ini umumnya disebabkan oleh contoh berbeda dari PHP yang digunakan oleh baris perintah PHP dibandingkan dengan server web. Secara khusus, mysql.sock
mungkin salah konfigurasi jika ini masalahnya.
Untuk menentukan apakah Anda menggunakan satu contoh PHP:
Masukkan perintah berikut:
php -i | grep 'php.ini'
Ini menentukan pengaturan yang digunakan oleh antarmuka baris perintah PHP (CLI). Catat dimana php.ini
letaknya.
phpinfo.php
di server web Anda.phpinfo.php
dengan yang dari php -i
.phpinfo.php
memperlihatkan php.ini
file yang digunakan oleh server web Anda. Jika berbeda dari apa yang ada di PHP php.ini
, Anda harus membuat semua pengaturan PHP konsisten untuk PHP CLI dan server web.
Untuk detail tambahan, lihat dokumentasi yang disediakan dengan server web Anda.
Saya memiliki beberapa versi PHP yang tersedia untuk saya melalui shell - mengetik php dan menekan tab menunjukkan yang mana autocomplete saya ketahui.
Bagi saya, PHP 5.4, 5.5 dan 5.6 semuanya berfungsi dengan baik, tetapi PHP 7 tidak menemukan mysql.sock, dan sedang menabrak "SQLSTATE [HY000] [2002] Tidak ada kesalahan file atau direktori" yang dibahas dalam pertanyaan ini .
# 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
Untuk melihat di mana server mysql Anda memiliki soketnya, gunakan perintah ini:
cat /etc/mysql/my.cnf | grep socket
Dalam kasus saya, dengan Percona Mysql terinstal di sistem gelandangan saya, file socket sock kebetulan tinggal di sini:
/var/run/mysqld/mysqld.sock
(perhatikan bahwa ini disebut mysqld bukan hanya mysql )
Saya memiliki beberapa versi php untuk dipilih dan perintah ini menunjukkan kepada saya mana yang memiliki masalah dan mana yang baik-baik saja:
Jawabannya bagi saya adalah dengan memasukkan kode dalam skrip penyedia gelandangan untuk membuat symlink antara /tmp/mysql.sock dan /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
Dengan adanya symlink baru, skrip pengujian yang diberikan sebelumnya sekarang berfungsi dengan baik untuk semua versi PHP dan saya dapat menggunakan localhost dalam kode saya daripada harus memberikan alamat IP 127.0.0.1 .
Ini sepertinya salah versi PHP, Anda harus memilih php mana yang harus digunakan untuk menjalankan perintah sebagai berikut:
/Applications/MAMP/bin/php/php7.1.20/bin/php bin/magento setup:upgrade
PS: Sampel di atas adalah untuk MAC, Anda dapat melakukannya dengan cara yang sama untuk windows atau unix juga.