
Laravel 5.4 把默認数據庫字符集更改成utf8mb4,只要你使用的MySQL是5.7.7或更高版本下,執行該命令時就不會出現錯誤。
對於使用舊版本的MySQL,在執行命令時就會有如下錯誤訊息。
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);
}
Schema::defaultStringLength(191);是設置好的默認的字符串長度,代表遷移中的欄位沒有設置長度的時候,varchar的欄位會被默認長度為191。
鏈結到這頁!