Laravelでmigrate 実行時、"default character set utf8mb4 collate 'utf8mb4_unicode_ci'" エラーが発生した場合の対処法
Laravelでカラム名を変更しようとして、php artisan migrate
を実行したときに下記のようなエラーが出ました・・
Illuminate\Database\QueryException : SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') default character set utf8mb4 collate 'utf8mb4_unicode_ci'' at line 1 (SQL: create table `magazines` () default character set utf8mb4 collate 'utf8mb4_unicode_ci')
抜粋すると・・
You have an error in your SQL syntax
') default character set utf8mb4 collate 'utf8mb4_unicode_ci''
なにやらSQLの構文が間違っている・照合順序がおかしいと言われているような感じだったので、
マイグレーションファイルに$table->collation('utf8_unicode_ci')
を追加してみるも上手くいかず・・
マイグレーションファイルを再度確認・・
Schema::create('magazines', function($table)
{
$table->renameColumn('title', 'magazine_title');
});
ん?何かがおかしい。気づきましたか?
そうです、Schema::create
になっていました・・。
Schema::createでrenameColumnメソッドを実行したのでエラーとなったようです。
正しくはSchema::table
です。
Schema::table('magazines', function($table)
{
$table->renameColumn('title', 'magazine_title');
});
これで問題なく動くようになりました!
それにしてもエラー内容から推測しづらいですね^^;
ということで、まずはマイグレーションファイルの中身を疑った方が良さそうだということがわかりました!