LoginSignup
2
1

More than 3 years have passed since last update.

XAMP/MAMPでのLaravel注意点 文字数やマイグレーション

Last updated at Posted at 2019-05-14

MAMP環境でマイグレーションができなかった

会社のWindowsPCのXAMPPでLaravel開発をしている時は特につまづく事無くスムーズに事が運んでいました。
しかし、自宅のMacPCで開発となると全くマイグレーションが成功せず、開発ができなくなってしまいました!
Macの場合はXAMPPでなくMAMPを使うため、環境が違うせいで設定の仕方が変わるのです。

やっと解決方法がわかったので、ここに記録します。

1、バージョンの低いLaravel

Laravelのバージョンが低いとマイグレーションで失敗する可能性があります。

デフォルトのマイグレーションファイルはDBに反映されるのに、自作したマイグレーションファイルが反映されないパターンの時は、バージョンが低い事が原因だったりします。

Laravelはデータベース中への「絵文字」保存をサポートするため、
デフォルトでutf8mb4文字セットを使っています。
バージョン5.7.7より古いMySQLや、バージョン10.2.2より古いMariaDBを使用している場合、
マイグレーションにより生成されるデフォルトのインデックス用文字列長を
明示的に設定する必要があります。
AppServiceProvider中で
Schema::defaultStringLengthを呼び出してください。

解決策

1、AppServiceProviderに追記する

app\Providers\AppServiceProvider.phpのuseのところに

use Illuminate\Support\Facades\Schema;

を追記します。さらにboot関数の中に

Schema::defaultStringLength(191);

を追記します。

これでマイグレーションが通るようになります。

2、そもそもバージョンの高いLaravelを入れる

Laravelをインストールする際にバージョンを簡単に指定してしまえば解決します。
古いLaravelだとFORM::が使えなかったりしますしね!
5.7以上をインストールするのであれば

composer create-project --prefer-dist laravel/laravel 名前 "5.7.*"

このようにインストールします。

2、MAMPは少し面倒

MAMPでマイグレーションをする場合には、config/database.phpに追記をしないといけません。

'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            // 追記 ↓
            'unix_socket'   => '/Applications/MAMP/tmp/mysql/mysql.sock',
        ],

そして.envファイルの設定は

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=データベース名
DB_USERNAME=root
DB_PASSWORD=root

XAMPPだと127.0.0.1だったりパスワード無しだったりするので、少しややこしいですね。

自分はこれらを修正した事でマイグレーションが通るようになりました。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1