環境
OS: Windows7(XAMPP環境)
MariaDB(mysql): 10.1.24(≒5.6 ?)
Laravel: 5.4.27
MariaDB(mysql): 10.1.24(≒5.6 ?)
Laravel: 5.4.27
Laravelで初期に準備されている「users」及び「password_resets」のマイグレーションを実行したところ以下のエラーが発生しました。
[Illuminate\Database\QueryException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table
[PDOException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes
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
))[PDOException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes
これはユニークキー(インデックス)として設定している「email」カラムが767バイトを超えてしまっている為に発生しているようです。
そこであらかじめ準備されていたマイグレーションファイルに直接変更を加えて対処しました。
database\migrations
配下にある以下の2つのファイルの
2014_10_12_000000_create_users_table.php
2014_10_12_100000_create_password_resets_table.php
emailの記述部分に長さの指定(191文字)を指定しました。
これによりemailのバイト数が767を超えなくなるので無事マイグレーションが実行できました。
1 2 |
//$table->string('email')->unique(); $table->string('email',191)->unique(); |
1 2 |
//$table->string('email')->index(); $table->string('email',191)->index(); |