SQLSTATE [HY000] [2002] Böyle bir dosya veya dizin hatası yok


14

İ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.


Bağlantı dizesini değiştirerek düzelttim, mysql'inizin açık olduğundan ve tüm tabloların veritabanında bulunduğundan emin olun.
Touqeer Shafi

Yanıtlar:


12

PHP 7.0.13 ile Magento 2.1.0'ı yüklerken de aynı sorunu yaşadım.
Veritabanı ana bilgisayar adını localhost yerine 127.0.0.1 olarak ayarlayarak bu sorunu çözebilirim .


Bu nerede yapılmalı?
joeybab3

iç ./app/etc/env.php
Jino

10

Listelenen sunucu ise app/etc/local.xmlolduğu localhostve 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.sockiçinde ya da her türlü soket dosyası kurulur my.cnfgeç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.


6

veritabanı ana bilgisayar adını localhost yerine 127.0.0.1 olarak ayarlayın.


2

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



1

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.


0

/ Etc / local.xml dosyanızı düzgün bir şekilde düzenlediğinizden emin olun . Tablolarınız için önekiniz yoksa doğru satırın olduğundan emin olun:

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

DEĞİL

<table_prefix>{{db_prefix}}</table_prefix>

0

Bunun nedeni genellikle, PHP komut satırı tarafından web sunucusuna kıyasla kullanılan farklı bir PHP örneğidir. Özellikle, mysql.sockdurum böyleyse yanlış yapılandırılabilir.

Bir PHP örneği kullanıp kullanmadığınızı belirlemek için:

  1. Magento sunucunuza giriş yapın.
  2. 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.inibulunduğuna dikkat edin.

  1. Henüz yapmadıysanız phpinfo.php, web sunucunuzda bir kurulum yapın.
  2. Değerini karşılaştırın Yüklendi Yapılandırma Dosyası dan phpinfo.phpgelen biri ile php -i.

phpinfo.phpphp.iniweb sunucunuz tarafından kullanılan dosyayı gösterir . PHP'dekilerden farklıysa, php.initü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.


Bu olabilir - sanırım şu an bununla karşı karşıyayım. Ama neden? Bu ini dosyalarında ne kontrol edileceği konusunda belirli fikirler var mı?
VladFr


0

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 .


0

Aynı hatayı alıyorum "SQLSTATE [HY000] [2002] Böyle bir dosya veya dizin yok". Ve MySQL hizmetinin durdurulduğunu gördü. MySQL hizmetime ve iyi çalışmasına başladım.


0

Magento kök dizininizdeki env yapılandırma dosyasında ana makine adını localhost yerine 127.0.0.1 olarak değiştirmeniz gerekir

  • Uygulamayı aç / etc / env.php
  • 'host' => 'localhost' seçeneğini 'host' => '127.0.0.1' olarak değiştirin
  • Dosyayı kaydet ve tekrar dene
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.