DukeAnn
做一个优雅的程序员

laravel5.4执行php artisan migrate报错,数据库字段长度不够

Laravel 5.4默认使用utf8mb4字符编码,而不是之前的utf8编码。因此运行PHP artisan 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

Laravel 5.4默认使用utf8mb4字符编码,该编码支持对“emojis”进行排序。如果你是从5.3升级到5.4,不需要对字符编码做切换。

如果你选择手动切换到这个字符编码,并且运行的MySQL版本低于5.7.7,可能还需要手动配置迁移命令生成的默认字符串长度,你可以在AppServiceProvider中调用Schema::defaultStringLength方法来实现这一配置:

use Illuminate\Support\Facades\Schema;

/**
 * Bootstrap any application services.
 *
 * @return void
 */
public function boot()
{
    Schema::defaultStringLength(191);
}

再次执行 php artisan migrate
解决

DukeAnn的笔记本:DukeAnn的博客 » laravel5.4执行php artisan migrate报错,数据库字段长度不够
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址