Laravel でユーザー テーブルを移行しようとしています。移行を実行すると、次のエラーが発生します。
[Illuminate\Database\QueryException] SQLSTATE[42000]: 構文エラーまたはアクセス違反: 1071 指定されたキーが長すぎます。最大キー長は 767 バイトです (SQL: alter table
users
add unique users_email_uniq(
私の移行は次のとおりです。
Schema::create('users', function(Blueprint $table)
{
$table->increments('id');
$table->string('name', 32);
$table->string('username', 32);
$table->string('email', 320);
$table->string('password', 64);
$table->string('role', 32);
$table->string('confirmation_code');
$table->boolean('confirmed')->default(true);
$table->timestamps();
$table->unique('email', 'users_email_uniq');
});
グーグルで調べたらこのバグレポートここで、Taylor は、インデックス キーを の 2 番目のパラメータとして指定できると言っていますunique()
。私もそうしました。それでもエラーが発生します。一体何が起こっているのでしょうか?
ベストアンサー1
電子メールの長さを短く指定します:
$table->string('email', 250);
実際のところ、これがデフォルトです:
$table->string('email');
そしてあなたは良いはずです。
Laravel 5.4の場合、ここに解決策がありますLaravel 5.4: 指定されたキーが長すぎるというエラー、Laravel ニュース役職:
移行ガイドに概説されているように、これを修正するには、AppServiceProvider.php ファイルを編集し、ブート メソッド内でデフォルトの文字列の長さを設定するだけです。
use Illuminate\Database\Schema\Builder;
public function boot()
{
Builder::defaultStringLength(191);
}