İsteğiniz işleme koyulurken bir hata oluştu
SQLSTATE [HY000] [2002] Böyle bir dosya veya dizin yok
Yukarıdaki hatayı almak lütfen birisi bana bunu çözmek için çözüm sağlar.
İsteğiniz işleme koyulurken bir hata oluştu
SQLSTATE [HY000] [2002] Böyle bir dosya veya dizin yok
Yukarıdaki hatayı almak lütfen birisi bana bunu çözmek için çözüm sağlar.
Yanıtlar:
Listelenen sunucu ise app/etc/local.xml
olduğu localhost
ve bu hata Magento'nın hata günlüğünde görünür, ancak Magento hala düzgün çalıştığından emin, daha sonra MySQL tekrar başlandı ve soket /tmp/mysql.sock
içinde ya da her türlü soket dosyası kurulur my.cnf
geçici olarak ortadan kayboldu.
Eksik olduğu için PDO mysql bağlayıcısı SQLSTATE[HY000] [2002] No such file or directory
Bu hatayı sürekli olarak alıyorsanız ve İstisna Hatası sayfasından başka Magento'ya erişiminiz yoksa, mysql tamamen çöktü ve nedenini bulmak ve mysql'yi yeniden başlatmak için barındırma sağlayıcınıza ihtiyacınız var.
Bu, ur dosya sistemi doluysa da olabilir ... df -h 1 ... tabii ki, çoğunlukla u shud bundan önce uyarılar alır ...
mysqld normal çalışmayacak ve "güvenli" modda olacaktır
HTH SNS
Aynı sorunu vardı ve hangi php kullanmak zorunda seçmek için aşağıda kullanılır. /usr/local/etc/php/7.2/bin/php bin/magento setup:di:compile
Resmi dokümanlara bakın: SQLSTATE [HY000] [2002] Böyle bir dosya veya dizin yok
Bu yanlış PHP sürümü sorunu gibi görünüyor, komutu aşağıdaki gibi çalıştırmak için hangi php kullanmak zorunda seçmeniz gerekir:
/Applications/MAMP/bin/php/php7.1.20/bin/php bin/magento setup:upgrade
Not: Yukarıdaki örnek MAC içindir, pencereler veya unix için de benzer şekilde yapabilirsiniz.
Bunun nedeni genellikle, PHP komut satırı tarafından web sunucusuna kıyasla kullanılan farklı bir PHP örneğidir. Özellikle, mysql.sock
durum böyleyse yanlış yapılandırılabilir.
Bir PHP örneği kullanıp kullanmadığınızı belirlemek için:
Aşağıdaki komutu girin:
php -i | grep 'php.ini'
Bu, PHP komut satırı arabirimi (CLI) tarafından kullanılan ayarları belirler. Nerede php.ini
bulunduğuna dikkat edin.
phpinfo.php
, web sunucunuzda bir kurulum yapın.phpinfo.php
gelen biri ile php -i
.phpinfo.php
php.ini
web sunucunuz tarafından kullanılan dosyayı gösterir . PHP'dekilerden farklıysa, php.ini
tüm PHP ayarlarını hem PHP CLI hem de web sunucusu için tutarlı hale getirmelisiniz.
Ek ayrıntılar için web sunucunuzla birlikte verilen belgelere bakın.
Ben php yazarak ve sekme tuşuna basarak benim PHP kullanılabilir birkaç sürümü var benim otomatik tamamlama hakkında bildiklerini gösterir.
Benim için, PHP 5.4, 5.5 ve 5.6 iyi çalışıyor, ancak PHP 7 mysql.sock bulamadı ve "SQLSTATE [HY000] [2002] Böyle bir dosya veya dizin hatası yok" ile kilitleniyor bu soruda tartışıldı .
# 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 sunucunuzun soketine nerede sahip olduğunu görmek için şu komutu kullanın:
cat /etc/mysql/my.cnf | grep socket
Benim durumumda, benim vagrant sistemime yüklü Percona Mysql ile çorap soket dosyası burada yaşamak için oldu:
/var/run/mysqld/mysqld.sock
( sadece mysql değil mysqld olarak adlandırıldığına dikkat edin )
Ben seçim için php birkaç sürümleri var ve bu komutlar bana hangilerinin sorunları vardı ve hangilerinin iyi olduğunu gösterdi:
Benim cevabım, /tmp/mysql.sock ve /var/run/mysqld/mysqld.sock arasında bir sembolik bağlantı oluşturmak için vagrant sağlayıcı komut dosyasına kod eklemekti.
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
Yeni symlink yerinde olduğunda, daha önce verilen test komut dosyası şimdi PHP'nin tüm sürümleri için mükemmel çalışıyor ve 127.0.0.1 IP adresini vermek yerine kodumda localhost kullanabilirim .