Laravel 遷移中的唯一鍵長度問題
在Laravel 中,為表列建立唯一鍵時,可能會遇到錯誤,指出指定的密鑰太長。當為唯一鍵定義的列的長度超過允許的最大長度時,就會出現此問題。
問題排查
提供的遷移指定了唯一約束長度為 320 個字元的「電子郵件」欄位。但是,預設情況下,Laravel 中的 'email' 列被定義為預設長度為 255 的字串。此預設長度對於大多數電子郵件地址來說應該足夠了。
要解決此問題,請考慮減少長度遷移中「email」列的長度為合理的值,例如250 個字元:
$table->string('email', 250);
或者,您可以明確指定唯一鍵的長度作為'unique() 的第二個參數' 方法:
$table->unique('email', 'users_email_uniq', 320);
Laravel 5.4 及更高版本
對於Laravel 5.4 及更高版本,可以使用更全面的解決方案。在「AppServiceProvider.php」檔案中,將以下程式碼新增至「boot()」方法:
use Illuminate\Database\Schema\Builder; public function boot() { Builder::defaultStringLength(191); }
將預設字串長度設定為191 可確保使用「string()」方法建立的列最大長度為191 個字符,消除了遇到唯一密鑰長度問題的可能性。
以上是如何修復 Laravel 遷移中的唯一密鑰長度錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!