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),不要错过任何新版本,框架提示和新教程。