Laravel 移行エラー: 一意のキーの長さの制限を超えました
Laravel で、一意のキーを列に追加する移行を作成するときに、文字列が長すぎると、次のエラーが発生する可能性があります:
[Illuminate\Database\QueryException] SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes
このエラー多くの場合、列に短い長さを指定することで解決できます。文字列のデフォルトの長さは 250 文字で、ほとんどの電子メール アドレスやその他の一般的な文字列にはこれで十分です。
特定の移行では、電子メール列を長さ 320 の文字列として定義しました。試してみてください。この長さを 250 またはデフォルト値に減らします:
Schema::create('users', function (Blueprint $table) { $table->string('email', 250); // or $table->string('email');
列の長さを調整してもまだエラーが発生する場合は、デフォルトの文字列長を設定してみてください。あなたのデータベース。 Laravel 5.4 以降では、AppServiceProvider.php ファイルに以下を追加することでこれを実現できます:
use Illuminate\Database\Schema\Builder; public function boot() { Builder::defaultStringLength(191); }
これにより、移行で作成されるすべての新しい列のデフォルトの文字列長が 191 文字に設定されます。
以上がLaravel 移行エラーを解決する方法: 一意のキーの長さの制限を超えましたか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。