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