Laravel 5.4: Specified key was too long error

Laravel 5.4 對默認的數據庫字符集做了更改,這只會影響在你正在運行 MySQL 版本低於 v5.7.7的時候,若是更高的話,應該不會有這樣的問題的。對於運行 MariaDB或 v5.7.7 以下版本的 MySQL使用者,當在執行 migrate 時,你可能會碰到以下的錯誤:


[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);
}