LoginSignup
kakudaisuke
@kakudaisuke (daisuke kaku)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

php artisan migrateを実行したいがエラーが解決できない

やりたいこと

Laravelを使ったWebサービス開発にあたって、ローカル開発環境としてMAMPを使用したいです。LaravelからphpMyAdminで作成したDBにアクセスをするために、$ php artisan migrateを実行したいのですが、エラーが止まず困り果てています。
プロジェクト名:jazz-review
DB名:jazz_review

エラーの内容

$ php artisan migrate

Illuminate\Database\QueryException 

  SQLSTATE[HY000] [2002] No such file or directory (SQL: select * from information_schema.tables where table_schema = jazz_review and table_name = migrations and table_type = 'BASE TABLE')

  at vendor/laravel/framework/src/Illuminate/Database/Connection.php:671
    667|         // If an exception occurs when attempting to run a query, we'll format the error
    668|         // message to include the bindings with SQL, which will make this exception a
    669|         // lot more helpful to the developer instead of just the database's errors.
    670|         catch (Exception $e) {
  > 671|             throw new QueryException(
    672|                 $query, $this->prepareBindings($bindings), $e
    673|             );
    674|         }
    675| 

      +34 vendor frames 
  35  artisan:37
      Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))

jazz_reviewというのは今回のDBの名前です。

確認したこと、試したこと

php artisan migrateはlaravelのプロジェクト(フォルダ)の直下で打っています

$ pwd
/Applications/MAMP/htdocs/jazz-review

jazz_reviewというのは今回のプロジェクトの名前です。

phpMyAdmin

jazz_reviewという名前のデータベースを作成しています。色々試す中で、今テーブルは一つもない状態で、空のDBになっています。
スクリーンショット 2020-09-02 19.19.06.png
このDBはFinderでも/Applications/MAMP/db/mysql57で確認することができます。

.envファイルの設定

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=8889
DB_DATABASE=jazz_review
DB_USERNAME=root
DB_PASSWORD=root
DB_SOCKET=/Applications/MAMP/tmp/mysql/myqsl.sock

DB_HOSTは127.0.0.1でも試しました。

Laravelのdatabaseフォルダ内のdatabase.phpの設定

'default' => env('DB_CONNECTION', 'mysql'),

//中略

        'mysql' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', 'localhost'),
            'port' => env('DB_PORT', '8889'),
            'database' => env('DB_DATABASE', 'jazz_review'),
            'username' => env('DB_USERNAME', 'root'),
            'password' => env('DB_PASSWORD', 'root'),
            'unix_socket' => env('DB_SOCKET', '/Applications/MAMP/tmp/mysql/myqsl.sock'),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],
        ],

hostは'127.0.0.1'でも試しました。
unix_socketのenvの第2パラメータは空''でも試しました。

php artisan make:migration create_usersの実行と設定

スクリーンショット 2020-09-02 19.29.33.png

MySQLでの確認(ターミナルにて)

今回のDB(jazz_reviewデータベース)があることを確認しました。
スクリーンショット 2020-09-02 19.39.27.png
mysql> show variables like '%sock%';でsocketを確認しました。

スクリーンショット 2020-09-02 19.39.18.png

最後に

大変恐れ入りますが、よろしくお願いします。

0

1Answer

基本的な確認になりますが、

mysql.sockファイルはそのパスに実在しますか?

/Applications/MAMP/tmp/mysql/myqsl.sock

こちらのファイルが存在することを確認されましたか?

hostが127.0.0.1かつunix_socketはの組み合わせは試されましたか?

hostは'127.0.0.1'でも試しました。
unix_socketのenvの第2パラメータは空''でも試しました。

env()の第2引数はデフォルト値なので、.envファイルで設定されている場合はそちらが優先されるはずです。
第2パラメータを空にした時の.envファイルの設定はどうでしたか?

Laravelに付属しているmigrationsファイルでテーブルを作成できますか?

これが出来ればmigrationsファイルの書き方に問題があるのかもしれません。
使用してるLaravelのバージョンと、参考にしている資料などのバージョンは一致していますか?

0

Comments

  1. @kakudaisuke

    Questioner
    コメントどうもありがとうございます。

    mysql.sockファイルはそのパスに実在しますか?
    →このパスにはmysql.sockではなくmysql.sock.lockというファイルが存在し、似ているので同一のものと片付けてしまっていました。

    hostが127.0.0.1かつunix_socketは空の組み合わせは試されましたか?
    →はい。試しに今一度実行してみましたが、同じエラーメッセージが発生しました。

    Laravelに付属しているmigrationsファイルでテーブルを作成できますか?
    →やり方を調べてトライしてみます。またコメントさせていただきます。
  2. @kakudaisuke

    Questioner
    @blue32aさん
    わかりました。
    DB_SOCKET=/Applications/MAMP/tmp/mysql/myqsl.sockのスペルが間違えていました..............。mysqlがmyqslになってました。こんなつまらない結論で本当に申し訳ありません!!
    これで"Migration table created successfully."と出ました。
    どうもありがとうございます。

Your answer might help someone💌