SQLSTATE [HY000] [2002] Tidak ada kesalahan file atau direktori tersebut

14

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.

pembuat kode
sumber
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 .

Jino
sumber
Di mana ini harus dilakukan?
joeybab3
di dalam ./app/etc/env.php
Jino
10

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.

Laboratorium Fiasco
sumber
6

atur nama host database sebagai 127.0.0.1 alih-alih localhost.

tamu
sumber
2

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

shaheen shah
sumber
0

Pastikan Anda mengedit aplikasi / etc / local.xml dengan benar. Jika Anda tidak memiliki awalan untuk tabel Anda, pastikan baris yang tepat adalah:

<table_prefix><![CDATA[]]></table_prefix>

TIDAK

<table_prefix>{{db_prefix}}</table_prefix>
AlexL
sumber
0

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:

  1. Masuk ke server Magento Anda.
  2. Masukkan perintah berikut:

    php -i | grep 'php.ini'

Ini menentukan pengaturan yang digunakan oleh antarmuka baris perintah PHP (CLI). Catat dimana php.iniletaknya.

  1. Jika Anda belum melakukannya, atur a phpinfo.phpdi server web Anda.
  2. 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.

gelanivishal
sumber
Ini bisa terjadi - saya pikir saya sedang menghadapi ini sekarang. Tapi kenapa? Adakah ide spesifik tentang apa yang harus diperiksa dalam file ini?
VladFr
4
Sebaliknya, Anda dapat memberikan rasa hormat ke halaman ini devdocs.magento.com/guides/v2.0/install-gde/trouble/php/…
Shan
0

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 .

Martin Francis
sumber
0

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.

Pandurang
sumber
0

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.

pemalu
sumber