Laravel 5.*默认使用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

问题根源

MySql支持的utf8编码最大字符长度为3字节,如果遇到4字节的宽字符就会出现插入异常。三个字节UTF-8最大能编码的Unicode字符是0xffff,即Unicode中的基本多文种平面(BMP)。因而包括Emoji表情(Emoji是一种特殊的Unicode编码)在内的非基本多文种平面的Unicode字符都无法使用MySql的utf8字符集存储。

这也应该就是Laravel 5.*改用4字节长度的utf8mb4字符编码的原因之一。不过要注意的是,只有MySql 5.5.3版本以后才开始支持utf8mb4字符编码(查看版本:select version();)。如果MySql版本过低,需要进行版本更新。

解决方法一:

  1. 升级MySql版本到5.5.3以上。
  2. 手动配置迁移命令migrate生成的默认字符串长度,在AppServiceProvider中调用Schema::defaultStringLength方法来实现配置:

        use Illuminate\Support\Facades\Schema;public function boot(){Schema::defaultStringLength(191);}

解决方法一:

config/database.php文件中 msql配置信息修改 chartset,collation

'mysql' => ['driver' => 'mysql','host' => env('DB_HOST', '127.0.0.1'),'port' => env('DB_PORT', '3306'),'database' => env('DB_DATABASE', 'forge'),'username' => env('DB_USERNAME', 'forge'),'password' => env('DB_PASSWORD', ''),'unix_socket' => env('DB_SOCKET', ''),// 'charset' => 'utf8mb4',  //修改前
   // 'collation' => 'utf8mb4_unicode_ci', //修改前
     'charset' => 'utf8',//修改后
     'collation' => 'utf8_unicode_ci',//修改后
    'prefix' => '','strict' => true,'engine' => null,
],

Laravel5.6 migrate时报错 SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too相关推荐

  1. PDOException::(“SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long;

    运行php artisan migrate报错 PDOException:: ("SQLSTATE[42000]: Syntax error or access violation: 107 ...

  2. SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length

    app/Providers/AppServiceProvider.php  设置默认长度 <?phpnamespace App\Providers;use Illuminate\Support\ ...

  3. Illuminate\Database\QueryException : SQLSTATE[42000]: Syntax error or access violation: 1071

    Illuminate\Database\QueryException : SQLSTATE[42000]: Syntax error or access violation: 1071 Specifi ...

  4. tp报错: SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is

    这是报错信息:SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not i ...

  5. MySQL SQLSTATE[42000]: Syntax error or access violation: 1286 Unknown table engine 'InnoDB' 错误的原因及解决

    博客搬家:由于各种原因,我现在的博客将首发于blog.mojijs.com, 可以百度搜索 "姜哥的墨迹技术博客" , 或者 点击这里 本文首发地址 http://blog.moj ...

  6. MySQL错误:SQLSTATE[42000]: Syntax error or access violation

    MySQL错误:SQLSTATE[42000]: Syntax error or access violation: 问题描述: 查询数据是遇到这个问题(mysql5.7) 原因分析: 后面查资料才知 ...

  7. MySQL laravel,MySQL错误:SQLSTATE[42000]: Syntax error or access violation

    解决办法: 1 修改MySQL配置文件sql_mode="" 2 发现 laravel 依然报错是因为laravel mysql 数据库开启了严格模式,导致很多 mysql 语句可 ...

  8. yii2 Syntax error or access violation: 1071 Specified key was too long Syntax error or access violat

    我报错的是table %widget_text 修改的字段是key  设置起长度为191 eg: 'key' => $this->string(191)->notNull(),

  9. laravel使用php artisan migrate 报错 SQLSTATE[42000]的解决方式

    执行命令:php artisan migrate 或相关 问题报错: Illuminate\Database\QueryException : SQLSTATE[42000]: Syntax erro ...

最新文章

  1. Hibernate 入门小案例
  2. php输出mysqli查询出来的结果
  3. Excel催化剂回顾2019年产出(文章合集),展望2020年
  4. 为什么黑客都用python-黑客编程为什么首选Python语言?这里告诉你答案!
  5. 一行命令开启VNC 和windows之间复制粘贴功能
  6. html表格之个人简历
  7. 爱签电子合同电子签章助力银行数智化发展
  8. deeplink唤醒app测试软件,短信跳转app-DeepLink
  9. bam获取序列_bam格式文件处理大全(四)
  10. php将一维数组转换成二维数组
  11. Unity+NGUI性能优化方法总结
  12. seaborn可视化01,涵盖几乎所有用法
  13. hacker入门专业术语
  14. ~4.2 ccf 2021-12-1 序列查询
  15. 推荐收藏:河海大学物联网工程学院历年复试线汇总
  16. 2021.9.9科研日志
  17. 关于position中图标或者图片定位不准确,如何调准定位中心点
  18. 暖暖老显示连接服务器失败,闪耀暖暖登录失败原因 闪耀暖暖登录失败解决办法...
  19. 计算机专业成长计划书,计算机专业学习计划书
  20. 光庭2021c语言笔试题,上海市闵行区莘松中学2020—2021学年八年级下学期期中考试语文试题.docx...

热门文章

  1. DBCP连接池问题分析
  2. unity打不开的解决方法
  3. MATLAB复习第一部分
  4. GCC的attribute——format
  5. Centos 7搭建Nagios
  6. 亚马逊刷关键词软件——亚马逊鲲鹏系统
  7. linux脚本编写计算器,Shell中编写简单计算器
  8. UE4项目优化(帧数优化)相关知识
  9. 你还不知道中国有多少人口?
  10. web前端零基础css3