2019年4月8日 星期一

[Laravel]使用migrate時發生錯誤Specified key was too long解決方式

由於Laravel使用的預設資料庫字集是utf8mb4,如果你使用的MySQL版本為 v5.7.7 以上,就不會有這個錯誤。
錯誤訊息類似:
[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))
[PDOException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes
解決方式為编辑 AppServiceProvider.php ,然後再 boot 方法内設置預設字串長度:
use Illuminate\Support\Facades\Schema;

public function boot()
{
    Schema::defaultStringLength(191);
}
再試一次就可以囉。

沒有留言:

張貼留言

Google Analytics初學者入門簡介