Laravelのインストール
お仕事でLaravelを使った案件がはじまりそうなのでLaravelとPHPを少し勉強してるのですが、
マイグレーション時に Syntax errorになってあわあわしちゃったのでメモです。
1. composerのinstall
まずはcomposerのinstallです。
https://getcomposer.org/download/
以下のページからダウンロードします。
composer --version
で「composer」コマンドが使えるか試してみます。
もしコマンドがないって言われたら、再起動したり、環境変数を確認してみてください。
2. laravelのインストール
composer create-project laravel/laravel --prefer-dist project-name 5.5
project-name部分は任意です。
インストールできたら、php artisan serve
でサーバーを起動します。
ブラウザでhttp://127.0.0.1:8000にアクセスすると以下の画面が表示されるとインストール成功です。
artisanとは?
ArtisanとはLaravelを構成しているコマンドラインインターフェイスの名前。 artisanは便利な多くのコマンドを提供していて、php artisan listで一覧を表示してくれます。
2.データベースの作成と設定
phpmyadminでMySQLに任意の名前のデータベースの作成をします。
/.envファイルの編集
DB_DATABASEはさっき作成した任意のデータベース名、DB_USERNAME、DB_PASSWORDはMySQLのユーザ名・パスワードにします。
※XAMPPだとDB_USERNAMEはroot、DB_PASSWORDは空で大丈夫なはずです。
11行目付近 ---- DB_DATABASE=DATABASE-NAME DB_USERNAME=root DB_PASSWORD= ----
php artisan migrate
コマンドでマイグレーションを実行します。
すると
In Connection.php line 664: SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 byt es (SQL: alter table `users` add unique `users_email_unique`(`email`)) In Connection.php line 458: SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 byt es
というエラーがでてしまいます。。。
原因は
- Laravel5.4から標準charasetがutf8mb4に変わった
- MySQLではユニーク制約を付けたカラムには767bytesまでしか入らない
からみたいです。
なのでカラムの最大値を変更し、767bytes以上の文字列が入らないようにします。
app\Providers\AppServiceProvider.php
use Illuminate\Support\Facades\Schema; public function boot() { Schema::defaultStringLength(191); }
この記述を追加します。
記述を追加したら、以下のコマンドで一旦全てのテーブルを削除してマイグレーションし直します。
php artisan migrate:rollback
php artisan migrate:fresh
これでエラーにならなければ大丈夫です。