konakona
MAMP升级Mysql版本,从而解决不支持utf8mb4问题
MAMP升级Mysql版本,从而解决不支持utf8mb4问题

今天开始做Vape工具的采集部分,被Laravel5.7最新的Dump Server吸引,不得不说这个真的是太牛逼了!毅然决然的安装了Laravel 5.7 。但是在执行php artisan migrate命令时出现了如下报错:

问题出在users表的users_email_unique字段类型上,从Laravel 5.4开始默认使用utf8mb4字符编码,而不是之前的utf8编码了。

要说我之前用5.4一直到5.6的时候为什么没有遇到这个问题呢,当时的项目都是copy之前的数据库的,而且我一直都有用utf8bm4的习惯(为了支持emoji)所以就没有用到migrate。

 

于是我上网搜了一圈,比如这篇,大部分说的是MYSQL版本大于5.6,或5.5.3以上就能正常运行了。但是我本机MYSQL就是5.6.35,远大于这些文章所指的mysql版本,还是不能运行,搞了半天Laravel要求的是Mysql版本是5.7.7及以上(参见官方说明),这些搜索到的结果其根本问题在于Mysql版本可用性的错误提示。

http://blog.crazyphper.com/wp-content/uploads/2019/01/D5821299-C7E1-4A8A-9BB8-4B72E392601A-800x311.jpeg

http://blog.crazyphper.com/wp-content/uploads/2019/01/4AD62B0F-E8F0-4945-8F60-E12E882057C3.jpg

但是这些文章中通过修改AppServiceProvider文件的解决方案是可行的,大家可以参考文章去解决。

 

或者自己创建或者Copy别人的users表结构(migrate命令一共就创建3个表,执行失败也会创建成功2个表,就还剩一个users表)。比如Laravel5.7的users表结构:

 

 

而我这里选择升级MAMP大象的MYSQL版本。

 

通过brew安装Mysql,默认装的就是最新的,然后再用软链接映射到MAMP里,缺点是不能通过MAMP界面点“Server”来启动服务了,得走命令行。

需要手动设置一下root用户的密码,跟着步骤设置就行,见下图提示。

http://blog.crazyphper.com/wp-content/uploads/2019/01/963C61CE-C506-49B1-AD04-54D953CEB973.jpg

启动mysql:

找到mysql.sock然后做符号连接到mamp里面:

然后直接重启web服务器就可以了,不要使用mamp界面启动服务,因为那样会替换掉mysql.sock

此时已经成功使用5.7的mysql了,不过这个做法还不够完美,缺点是MAMP的Server启动变成命令行手动了。日后再看看还有没有好的解决方法。

赞赏
首页      程序开发      SQL      MAMP升级Mysql版本,从而解决不支持utf8mb4问题
https://secure.gravatar.com/avatar/3b712b34a0e1b689cfb524c9c6bcdc47?s=256&r=g

团哥

文章作者

继续玩我的CODE,让别人说去。 低调,就是这么自信。

发表评论

textsms
account_circle
email

konakona

MAMP升级Mysql版本,从而解决不支持utf8mb4问题
Since Laravel 5.4,Specified key was too long error.
扫描二维码继续阅读
2019-01-02