web-dev-qa-db-ja.com

MacでのLaravelの設定php artisan migrate error:No such file or directory

  1. 完全に機能するlaravel=プロジェクトをgitからMAMPを実行しているMacに取り込みました。プロジェクトはLinuxマシンで完全に実行されました。
  2. 作曲家のインストール
  3. 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です

45
Mwirabua Tim

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'    => '',
    ),
171
keithics

異なるunix_socketを想定せずに見つけてください。

まず、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を再起動します。

20
lijinma

同じ問題を抱えていたが、今はうまく機能している。

まだ問題がある場合は、これを試してください:

  • bootstrap/start.phpには、仮想ホストの名前ではなく、実際のホスト名が含まれます。ターミナルにhostnameと入力して、ホスト名を取得します。それは配列なので、ホスト名と仮想ホストの名前の両方を入力できると思います。
  • 「localhost」を「127.0.0.1」に置き換えます。
16
Nick

XAMPPを使用している場合、解決策は次のとおりです。

'mysql' => array(
        'driver'      => 'mysql',
        'unix_socket' => '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock',
        'Host'        => 'localhost'
)
12
cristianojeda

これは、Laravel 5.0、.envファイルのDB_Host = 127.0.0.1:3306を変更してください。

その他の回答は機能しません...

9
Igor Trindade

Laravel 5.0+の場合、.envファイル内のlocalhost127.0.0.1に変更し、Unixソケットなどで遊ぶ前に-これはうまくいきました。

Noobs注意:Laravel 5を使用し、古い学習教材を使用している場合、以前のバージョンからフォルダー構造に著しい変化があったことに注意してください。 https://mattstauffer.co/blog/laravel-5.0-directory-structure-and-namespace

5
brianjlennon

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構成ドライブに追加されました。

3
jai

別の解決策は、ホストキーにポート番号を追加することです。この場合、MAMPはデフォルトで8889を使用します。

'mysql' => array(
    'driver'    => 'mysql',
    'Host'      => 'localhost:8889',
    'database'  => 'essays',
    'username'  => 'root',
    'password'  => 'root',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
),
3
sveggiani