Laravel 遷移錯誤疑慮:超過唯一密鑰長度
嘗試在 Laravel中為電子郵件列建立唯一金鑰時,您可能會遇到下列錯誤:
[IlluminateDatabaseQueryException] SQLSTATE[42000]:語法錯誤或存取衝突:1071 指定的鍵太長;最大密鑰長度為767 位元組
儘管您已將索引鍵指定為unique() 方法的第二個參數,但錯誤仍然存在。這可能是由於電子郵件列的長度造成的。
5.4 之前的 Laravel 版本的解決方案:
要解決此錯誤,請減少電子郵件列的長度。預設長度為250 個字符,因此請在遷移中修改以下行:
$table->string('email', 250);
或者,您可以使用預設長度:
$table->string('email');
Laravel 5.4 的解決方案以上:
在Laravel 5.4中,您可以設定預設字串長度以避免此錯誤。在 AppServiceProvider.php 檔案中,將下列程式碼新增至 boot 方法:
use Illuminate\Database\Schema\Builder; public function boot() { Builder::defaultStringLength(191); }
這將確保所有字串列使用的最大長度為 191 個字元。
以上是如何修復 Laravel 遷移錯誤:超過唯一密鑰長度?的詳細內容。更多資訊請關注PHP中文網其他相關文章!