php artisan migrate、次のエラーが発生しました:
[PDOException]
SQLSTATE[HY000] [2002] No such file or directory
NB:php -vは5.5で、mysql -vは端末から5.5ですここは私のconfig/database.phpの一部です
'mysql' => array(
'driver' => 'mysql',
'Host' => 'localhost',
'database' => 'essays',
'username' => 'root',
'password' => 'root',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
Localhostを127.0.0.1に置き換えてみましたが、役に立ちませんでした。親切に助けてください。
編集: php.iniにこれらの3行を追加しました
mysql.default_socket = /var/run/mysqld/mysqld.sock
mysqli.default_socket = /var/run/mysqld/mysqld.sock
pdo_mysql.default_socket = /var/run/mysqld/mysqld.sock
また、このシンボリックリンクを追加しました:
Sudo mkdir /var/mysql
cd /var/mysql && Sudo ln -s /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
しかし、それは解決しませんでした。また、新しいlaravelプロジェクトをgitから取得し、composer install
その後php artisan migrate
の後に同じエラーに遭遇しました。
[PDOException]
SQLSTATE[HY000] [2002] No such file or directory
Macバージョンは10.7.4です
MAMPを使用している場合は、unix_socket
キーがMAMPにあるmysql.sock
が存在するパスの値に追加してください。
'mysql' => array(
'driver' => 'mysql',
'Host' => 'localhost',
'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
'database' => 'database',
'username' => 'root',
'password' => 'root',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
まず、nix_socketの場所を取得。
$ mysql -uroot -p
Mysqlパスワードを入力し、コマンドラインからmysqlサーバーにログインします。
mysql> show variables like '%sock%';
+---------------+---------------------------------------+
| Variable_name | Value |
+---------------+---------------------------------------+
| socket | /opt/local/var/run/mysql5/mysqld.sock |
+---------------+---------------------------------------+
Unix_soketは異なる場合があります。
次に、問題を解決するための2つの解決策があります。
(1)config/database.php
'mysql' => array(
'driver' => 'mysql',
'Host' => 'localhost',
'database' => 'essays',
'username' => 'root',
'password' => 'root',
'unix_socket' => '/opt/local/var/run/mysql5/mysqld.sock', //Your sock got from above
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
(2)php.iniを変更し、php.ini
ファイル
<? phpinfo();
異なるバージョンの多くのphpをインストールする可能性がありますので、php.iniファイルの場所を想定せずに、「phpinfo」から取得してください。
Php.iniを変更します。
mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock
pdo_mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
次に、Apacheまたはphp-fpmを再起動します。
同じ問題を抱えていたが、今はうまく機能している。
まだ問題がある場合は、これを試してください:
bootstrap/start.php
には、仮想ホストの名前ではなく、実際のホスト名が含まれます。ターミナルにhostname
と入力して、ホスト名を取得します。それは配列なので、ホスト名と仮想ホストの名前の両方を入力できると思います。XAMPPを使用している場合、解決策は次のとおりです。
'mysql' => array(
'driver' => 'mysql',
'unix_socket' => '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock',
'Host' => 'localhost'
)
これは、Laravel 5.0、.envファイルのDB_Host = 127.0.0.1:3306を変更してください。
その他の回答は機能しません...
Laravel 5.0+の場合、.envファイル内のlocalhost
を127.0.0.1
に変更し、Unixソケットなどで遊ぶ前に-これはうまくいきました。
Noobs注意:Laravel 5を使用し、古い学習教材を使用している場合、以前のバージョンからフォルダー構造に著しい変化があったことに注意してください。 https://mattstauffer.co/blog/laravel-5.0-directory-structure-and-namespace
Laravle 5.1.11バージョン+ MAC + MAMPPを使用している場合
ファイル「yourapp」/app/config/database.phpに「Unix_socket」を追加する必要があります
'mysql' => [
'driver' => 'mysql',
'Host' => env('DB_Host', 'localhost'),
'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],
Unix_socket paramが上記のmysql構成ドライブに追加されました。
別の解決策は、ホストキーにポート番号を追加することです。この場合、MAMPはデフォルトで8889を使用します。
'mysql' => array(
'driver' => 'mysql',
'Host' => 'localhost:8889',
'database' => 'essays',
'username' => 'root',
'password' => 'root',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),