SQLSTATE [HY000] [2002]そのようなファイルまたはディレクトリのエラーはありません


14

リクエストの処理中にエラーが発生しました

SQLSTATE [HY000] [2002]そのようなファイルまたはディレクトリはありません

上記のエラーが発生した場合、誰かがこれを解決するためのソリューションを提供してください。


接続文字列を変更して修正しました。mysqlがオンになっていて、データベースにすべてのテーブルが存在することを確認してください。
トゥーケシャフィ

回答:


12

PHP 7.0.13でMagento 2.1.0をインストールしているときに同じ問題が発生しました。
私は、データベース設定することでこの問題を解決することができ、ホスト名をとして127.0.0.1の代わりにlocalhostを


これはどこで行う必要がありますか?
joeybab3

内部./app/etc/env.php
ジノ

10

サーバーがリストにapp/etc/local.xmlありlocalhost、Magentoのエラーログにこのエラーが表示されているが、Magento が正常に実行されている場合、mysqlが再起動され、ソケット/tmp/mysql.sockまたは設定されているソケットファイルがmy.cnf一時的に消えます。

欠落しているため、PDO mysqlコネクターはレポートします SQLSTATE[HY000] [2002] No such file or directory

このエラーが継続的に発生し、Exception Errorページ以外にMagentoにアクセスできない場合、mysqlは完全にクラッシュしているため、ホスティングプロバイダーがmysqlの原因を見つけて再起動する必要があります。


6

データベースのホスト名をlocalhostではなく127.0.0.1に設定します。


2

これは、urファイルシステムがいっぱいの場合にも発生する可能性があります... df -h 1st ...もちろん、ほとんどの場合、その前にアラートを取得する必要があります...

mysqldは正常に実行されず、「セーフ」モードになります

HTH SNS



0

app / etc / local.xmlを適切に編集してください。テーブルのプレフィックスがない場合は、適切な行が次のとおりであることを確認してください。

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

ない

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

0

これは一般に、Webサーバーと比較してPHPコマンドラインで使用されているPHPの異なるインスタンスが原因です。特に、mysql.sockこれが当てはまる場合、設定が誤っている可能性があります。

PHPの1つのインスタンスを使用しているかどうかを判断するには:

  1. Magentoサーバーにログインします。
  2. 次のコマンドを入力します。

    php -i | grep 'php.ini'

これにより、PHPコマンドラインインターフェイス(CLI)で使用される設定が決まります。どこにphp.iniあるかに注意してください。

  1. まだ行っていない場合phpinfo.phpは、Webサーバーでセットアップします。
  2. 値の比較ロードされた設定ファイルのからphpinfo.phpのいずれかでphp -i

phpinfo.phpphp.iniWebサーバーが使用するファイルを表示します。PHPの内容と異なる場合php.iniは、PHP CLIとWebサーバーの両方ですべてのPHP設定を一貫させる必要があります。

詳細については、Webサーバーに付属のドキュメントを参照してください。


これは起こる可能性があります-私は今これに直面していると思います。しかし、なぜ?これらのiniファイルのチェックインに関する具体的なアイデアはありますか?
VladFr

4
むしろあなたは、このページにいくつかの礼儀を提供することができるdevdocs.magento.com/guides/v2.0/install-gde/trouble/php/...
シャン

0

シェルを介して複数のバージョンのPHPを利用できます。phpを入力してTab キーを押すと、オートコンプリートがどのバージョンを認識しているかがわかります。

私にとって、PHP 5.4、5.5、および5.6はすべて正常に機能していましたが、PHP 7はmysql.sockを見つけられず、この質問で説明した「SQLSTATE [HY000] [2002] No such file or directory error」でクラッシュしていました。

# 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サーバーにソケットがある場所を確認するには、次のコマンドを使用します。

cat /etc/mysql/my.cnf | grep socket

私の場合、Percona Mysqlが私の浮浪者システムにインストールされていると、たまたまソックソケットファイルがここに存在していました。

/var/run/mysqld/mysqld.sock

(単にmysqlではなくmysqldと呼ばれることに注意してください)

いくつかのバージョンのphpを選択できますが、これらのコマンドにより、問題のあるバージョンと問題のないバージョンがわかりました。

私にとっての答えは、/ tmp / mysql.sockと/var/run/mysqld/mysqld.sockの間にシンボリックリンクを作成するために、vagrantプロビジョニングスクリプトにコードを含めるだけでした。

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

新しいシンボリックリンクが配置されると、以前に指定されたテストスクリプトがすべてのバージョンのPHPで完全に機能するようになり、127.0.0.1の IPアドレスを指定する代わりに、コードでlocalhostを使用できます。


0

同じエラー「SQLSTATE [HY000] [2002] No such file or directory」が表示されます。そして、MySQLサービスが停止していることがわかりました。MySQLサービスを開始し、正常に機能しました。


0

これは間違ったPHPバージョンの問題のようです。次のようにコマンドを実行するために使用するPHPを選択する必要があります。

/Applications/MAMP/bin/php/php7.1.20/bin/php bin/magento setup:upgrade

PS:上記のサンプルはMAC用ですが、WindowsやUNIXでも同様の方法で行えます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.