Laravel 5.4更改了默認數據庫字符集,現在`utf8mb4`它包括對存儲表情符號的支持。這只會影響新的應用程序,并且只要您運行的是MySQL v5.7.7及更高版本,您就無需執行任何操作。
對于那些運行MariaDB或更舊版本的MySQL的用戶,在嘗試運行遷移時可能會遇到以下錯誤:
> \[Illuminate \\ Database \\ QueryException\]
> SQLSTATE \[42000\]:語法錯誤或訪問沖突:1071指定的密鑰太長;默認值為0。最大密鑰長度為767字節(SQL:alter table`users`添加唯一`users_email_unique`(`email`))
>
> \[PDOException\]
> SQLSTATE \[42000\]:語法錯誤或訪問沖突:1071指定的密鑰太長;默認值為0。最大密鑰長度為767字節
正如要解決此問題的《遷移[指南》中](https://laravel.com/docs/master/migrations#creating-indexes)概述的那樣,您所需要做的就是編輯`AppServiceProvider.php`文件,并在`boot`方法中設置默認字符串長度:
~~~
use Illuminate\Support\Facades\Schema;
public function boot()
{
Schema::defaultStringLength(191);
}
~~~
之后,一切都應正常進行。如果您喜歡這篇文章,請確定并加入[Laravel每周新聞](https://laravel-news.com/newsletter),不要錯過任何新版本,框架提示和新教程。