Saya telah memperbaikinya dengan mengubah string koneksi, pastikan bahwa mysql Anda aktif dan Anda memiliki semua tabel yang ada di database.
Touqeer Shafi
Jawaban:
12
Saya memiliki masalah yang sama saat menginstal Magento 2.1.0 dengan PHP 7.0.13. Saya bisa mengatasi masalah ini dengan menetapkan nama host database sebagai 127.0.0.1 bukan localhost .
Jika server Anda terdaftar dalam app/etc/local.xmladalah localhostdan kesalahan ini muncul di log kesalahan Magento, tetapi Magento masih berjalan ok, maka mysql telah dimulai kembali dan soket /tmp/mysql.sockatau file soket apa pun yang diatur untuk my.cnfsementara 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.
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
Ini umumnya disebabkan oleh contoh berbeda dari PHP yang digunakan oleh baris perintah PHP dibandingkan dengan server web. Secara khusus, mysql.sockmungkin salah konfigurasi jika ini masalahnya.
Untuk menentukan apakah Anda menggunakan satu contoh PHP:
Masuk ke server Magento Anda.
Masukkan perintah berikut:
php -i | grep 'php.ini'
Ini menentukan pengaturan yang digunakan oleh antarmuka baris perintah PHP (CLI). Catat dimana php.iniletaknya.
Jika Anda belum melakukannya, atur a phpinfo.phpdi server web Anda.
Bandingkan nilai File Konfigurasi yang Dimuat dari phpinfo.phpdengan yang dari php -i.
phpinfo.phpmemperlihatkan php.inifile 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 .
Saya mendapatkan kesalahan yang sama "SQLSTATE [HY000] [2002] Tidak ada file atau direktori". Dan menemukan bahwa layanan MySQL dihentikan. Saya memulai layanan MySQL saya dan berfungsi dengan baik.
Jawaban:
Saya memiliki masalah yang sama saat menginstal Magento 2.1.0 dengan PHP 7.0.13.
Saya bisa mengatasi masalah ini dengan menetapkan nama host database sebagai 127.0.0.1 bukan localhost .
sumber
Jika server Anda terdaftar dalam
app/etc/local.xml
adalahlocalhost
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 untukmy.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.
sumber
atur nama host database sebagai 127.0.0.1 alih-alih localhost.
sumber
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
sumber
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
sumber
Pastikan Anda mengedit aplikasi / etc / local.xml dengan benar. Jika Anda tidak memiliki awalan untuk tabel Anda, pastikan baris yang tepat adalah:
TIDAK
sumber
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:
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 dariphp -i
.phpinfo.php
memperlihatkanphp.ini
file yang digunakan oleh server web Anda. Jika berbeda dari apa yang ada di PHPphp.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.
sumber
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 .
Untuk melihat di mana server mysql Anda memiliki soketnya, gunakan perintah ini:
Dalam kasus saya, dengan Percona Mysql terinstal di sistem gelandangan saya, file socket sock kebetulan tinggal di sini:
(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
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 .
sumber
Saya mendapatkan kesalahan yang sama "SQLSTATE [HY000] [2002] Tidak ada file atau direktori". Dan menemukan bahwa layanan MySQL dihentikan. Saya memulai layanan MySQL saya dan berfungsi dengan baik.
sumber
Ini sepertinya salah versi PHP, Anda harus memilih php mana yang harus digunakan untuk menjalankan perintah sebagai berikut:
PS: Sampel di atas adalah untuk MAC, Anda dapat melakukannya dengan cara yang sama untuk windows atau unix juga.
sumber