Laravel 遷移錯誤:解決「指定密鑰太長」問題
嘗試使用 Laravel 5.4 的 php artisan 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 位元組。
解決方案:
方法一:更新應用服務提供者
依照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 Large 前綴
或者,使用者可以啟用 innodb_large_prefix他們的 MySQL 資料庫的選項。有關如何正確啟用此選項的說明,請參閱資料庫的文件。該解決方案允許更長的索引鍵,使其更適合更大的資料集。
以上是Laravel 遷移錯誤:如何修復「指定金鑰太長」問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!