Laravel 移行エラー:「指定されたキーが長すぎました」問題への対処
Laravel 5.4 の phpArtisan make:auth を使用しようとしたときコマンドを実行すると、次のような問題が発生する可能性があります。エラー:
[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 users add unique users_email_unique(email))
原因:
このエラーは、インデックス キーの長さがデータベース エンジンの最大許容長を超えると発生します。デフォルトでは、MySQL とそのバリアントのインデックス キーの最大長は 767 バイトです。
解決策:
方法 1: アプリケーション サービス プロバイダーを更新する
Laravel の公式ドキュメントで推奨されているように、次のコードをapp/Providers/AppServiceProvider.php ファイル:
use Illuminate\Support\Facades\Schema; /** * Bootstrap any application services. * * @return void */ public function boot() { Schema::defaultStringLength(191); }
これにより、すべての移行のデフォルトの文字列の長さが 191 文字に増加しますが、これは許容制限内です。
方法 2: InnoDB ラージ プレフィックスを有効にする
または、ユーザーはMySQL データベースの innodb_large_prefix オプション。このオプションを適切に有効にする方法については、データベースのドキュメントを参照してください。このソリューションでは、より長いインデックス キーを使用できるため、大規模なデータセットにより適しています。
以上がLaravel移行エラー:「指定されたキーが長すぎます」問題を修正する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。