Laravel 5.4がアップデートされたのでcomposer create-projectを実行してみました。そして、適当にDBを作成しenvファイルに情報を記入後、マイグレーションを実行してみました。しかし、早速下記のエラーが発生しました。
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table `users` add unique `users_email_unique`(`email`)) SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes
ググった結果、DBとかテーブルとかカラムがutf8なやつを、utf8mb4に変更するときに発生するそうです。
ユニーク制約付きvarcharは767byteまでしかいけないという決まりがあるそうです。
しかし、どのファイルをいじることで文字数を減らすことができるのか分かりません。
ご存知の方はご教示して頂けたら幸いです。
【補足情報】
<?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateUsersTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('users', function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->string('email')->unique(); $table->string('password'); $table->rememberToken(); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('users'); } }
<?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreatePasswordResetsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('password_resets', function (Blueprint $table) { $table->string('email')->index(); $table->string('token')->index(); $table->timestamp('created_at')->nullable(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('password_resets'); } }
回答2件
あなたの回答
tips
プレビュー