Laravel 5.4对默认数据库字符集进行了更改,现在utf8mb4它包括对存储表情符号的支持。这只会影响新的应用程序,只要您运行MySQL v5.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
正如migrate指南中所述,要解决此问题,您只需编辑AppServiceProvider.php
文件并在boot
方法内设置默认字符串长度:
use Illuminate\Support\Facades\Schema;
public function boot()
{
Schema::defaultStringLength(191);
}
还有同学说不能用Schema
,要用Bulider
,如下图:
之后,一切都应该正常工作。当然,还是建议您更换您的数据库版本,用MySQL5.7.7以及更高版本。
另外,有网友说需要修改config文件夹下的database.php,将'engine' => null
改为'engine' => 'InnoDB ROW_FORMAT=DYNAMIC'
,不过改完记得清理下缓存:
php artisan cache:clear
php artisan config:clear
viencoding.com版权所有,允许转载,但转载请注明出处和原文链接: https://viencoding.com/article/156