新手必看

新手必看

常见问题必读帮助文件
鸿宇官网

鸿宇官网

鸿宇科技官方网站
鸿宇教程库

鸿宇教程库

鸿宇科技官方教程
功能反馈与建议

功能反馈与建议

BUG反馈问题建议
鸿宇淘宝店铺

鸿宇淘宝店铺

鸿宇官方唯一淘宝店铺
旺迈特官网

旺迈特官网

B2B2C新零售智慧生态电商系统
旺迈特演示站点

旺迈特演示站点

B2B2C多用户商城、新零售智慧生态电商系统
QQ客服(技术支持)

QQ客服(技术支持)

QQ:1527200768/获取论坛账号/软件开发/功能定制

MySQL5.7 执行sql语句报错 [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause 解决方案

MySQL鸿宇 发表了文章 • 0 个评论 • 1509 次浏览 • 2020-05-22 14:36 • 来自相关话题

一、执行sql 语句:select version(),
@@sql_mode;SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));二、重启MySQL服务
一、执行sql 语句:
select version(),
@@sql_mode;SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
二、重启MySQL服务

phpstudy、WampServer、XAMPP等php本地环境运行缓慢的问题解决方法

Php鸿宇 发表了文章 • 0 个评论 • 1697 次浏览 • 2020-02-26 11:23 • 来自相关话题

 
1、修改mysql数据库host链接地址 localhost 为ip地址 127.0.0.1 。
2、使用最新版本的php集成开发环境软件。我们经常会使用些一键安装包部署本地服务器环境。比如phpstudy。
但是会有不少人发现,wordpress等使用数据库的程序打开或者切换页面的速度明显低于静态站点。甚至需要好几秒。这个问题一直困扰了我很久。
 
最终发现,数据库的连接上有一些问题。只要把数据库的连接地址从localhost改成127.0.0.1,网站的打开速度就有了质的提高。媲美静态站点。
 
后来上网多方求证,究其原因,Windows 7及以上的系统默认是支持IPV6的,在连接数据库的时,PHP 5.3及以上版本的php会先确认当前网络是IPv6还是IPv4,此环节会消耗一定的时间,从而影响网站的运行速度。
而 “127.0.0.1”,是IPv4的网络地址,所以这个环节就直接跳过了。
“127.0.0.1”和“localhost”实际上是一样,只是localhost不能明确告诉PHP是IPv4网络还是IPv6网络。
 
在非本地服务器上多数是linux系统,且该服务器系统对这部分的环节做了优化。
所以,即便用了localhost,也不会感觉慢。
这就是为什么,网站上传到服务器上后,为什么要比本地快的原因。
 
那么,在哪儿修改这部分内容呢?
最简单的方法是创建本地站点,数据库的地址填写127.0.0.1。
如果已经部署好,在网站配置文件里修改就ok了。 查看全部
 
1、修改mysql数据库host链接地址 localhost 为ip地址 127.0.0.1 。
2、使用最新版本的php集成开发环境软件。
我们经常会使用些一键安装包部署本地服务器环境。比如phpstudy。
但是会有不少人发现,wordpress等使用数据库的程序打开或者切换页面的速度明显低于静态站点。甚至需要好几秒。这个问题一直困扰了我很久。
 
最终发现,数据库的连接上有一些问题。只要把数据库的连接地址从localhost改成127.0.0.1,网站的打开速度就有了质的提高。媲美静态站点。
 
后来上网多方求证,究其原因,Windows 7及以上的系统默认是支持IPV6的,在连接数据库的时,PHP 5.3及以上版本的php会先确认当前网络是IPv6还是IPv4,此环节会消耗一定的时间,从而影响网站的运行速度。
而 “127.0.0.1”,是IPv4的网络地址,所以这个环节就直接跳过了。
“127.0.0.1”和“localhost”实际上是一样,只是localhost不能明确告诉PHP是IPv4网络还是IPv6网络。
 
在非本地服务器上多数是linux系统,且该服务器系统对这部分的环节做了优化。
所以,即便用了localhost,也不会感觉慢。
这就是为什么,网站上传到服务器上后,为什么要比本地快的原因。
 
那么,在哪儿修改这部分内容呢?
最简单的方法是创建本地站点,数据库的地址填写127.0.0.1。
如果已经部署好,在网站配置文件里修改就ok了。

MySQL - 替换字段部分内容(含:命令行、SQL语句)

鸿宇 发表了文章 • 0 个评论 • 2470 次浏览 • 2019-03-20 07:45 • 来自相关话题

官方出品:鸿宇科技
鸿宇论坛:bbs.hongyuvip.com
鸿宇QQ群:90664526
 
update 表名 set 字段1 = replace(字段1,'HongYu','HongYuTechnology') [mysql]replace的用法(替换某字段部分内容)

1.replace into
          replace into table (id,name) values('1','aa'),('2','bb')
          此语句的作用是向表table中插入两条记录。如果主键id为1或2不存在就相当于
          insert into table (id,name) values('1','aa'),('2','bb')
          如果存在相同的值则不会插入数据

2.replace(object,search,replace)
          把object中出现search的全部替换为replace
          select replace('www.hongyuvip.com','w','Ww')--->WwWwWw.
hongyuvip.com
          例:把表table中的name字段中的aa替换为bb
          update table set name=replace(name,'aa','bb')

3.UPDATE更新一个字段中的的部分内容

4.现在有一条记录的字段是"HongYu技术",现在我只想将该字段中的
"HongYu"改为"HongYuTechnology",update语句应该怎么写:

update 表名 set 字段1 = replace(字段1,'HongYu','HongYuTechnology') 查看全部
官方出品:鸿宇科技
鸿宇论坛:bbs.hongyuvip.com
鸿宇QQ群:90664526
 
update 表名 set 字段1 = replace(字段1,'HongYu','HongYuTechnology')
 
[mysql]replace的用法(替换某字段部分内容)

1.replace into
          replace into table (id,name) values('1','aa'),('2','bb')
          此语句的作用是向表table中插入两条记录。如果主键id为1或2不存在就相当于
          insert into table (id,name) values('1','aa'),('2','bb')
          如果存在相同的值则不会插入数据

2.replace(object,search,replace)
          把object中出现search的全部替换为replace
          select replace('www.hongyuvip.com','w','Ww')--->WwWwWw.
hongyuvip.com
          例:把表table中的name字段中的aa替换为bb
          update table set name=replace(name,'aa','bb')

3.UPDATE更新一个字段中的的部分内容

4.现在有一条记录的字段是"HongYu技术",现在我只想将该字段中的
"HongYu"改为"HongYuTechnology",update语句应该怎么写:

update 表名 set 字段1 = replace(字段1,'HongYu','HongYuTechnology')

Html5 div中图片垂直居中 如何使div中图片垂直居中

鸿宇 发表了文章 • 0 个评论 • 1650 次浏览 • 2018-04-16 14:48 • 来自相关话题

官方出品:鸿宇科技
鸿宇论坛:bbs.hongyuvip.com

鸿宇QQ群:90664526
 
解决方案:代码如下
<style type="text/css">
div {
display: table-cell;
vertical-align: middle;
text-align: center;
width: 100px;
height: 100px;
border: 1px solid #eee;
}
div > img {
vertical-align: middle;
}
</style>
 div相对与table对于图片的垂直居中支持的并不好,特别对于不同浏览器的兼容性来说,这里我们看下一个简洁的css解决方法: 
在曾经的 淘宝UED 招聘 中有这样一道题目: 

“使用纯CSS实现未知尺寸的图片(但高宽都小于200px)在200px的正方形容器中水平和垂直居中。” 

当然出题并不是随意,而是有其现实的原因,垂直居中是 淘宝 工作中最常遇到的一个问题,很有代表性。 
题目的难点在于两点: 
1.垂直居中; 
2.图片是个置换元素,有些特殊的特性。 
至于如何解决,下面是一个权衡的相对结构干净,CSS简单的解决方法:
.box {
/*非IE的主流浏览器识别的垂直居中的方法*/
display: table-cell;
vertical-align:middle;
/*设置水平居中*/
text-align:center;
/* 针对IE的Hack */
*display: block;
*font-size: 175px;/*约为高度的0.873,200*0.873 约为175*/
*font-family:Arial;/*防止非utf-8引起的hack失效问题,如gbk编码*/
width:200px;
height:200px;
border: 1px solid #eee;
}
.box img {
/*设置图片垂直居中*/
vertical-align:middle;
}
<div class="box">
<img src="http://pics.taobao.com/bao/album/promotion/taoscars_180x95_071112_sr.jpg" />
</div>
<html><head><style>.box {
/*非IE的主流浏览器识别的垂直居中的方法*/
display: table-cell;
vertical-align:middle;
/*设置水平居中*/
text-align:center;
/* 针对IE的Hack */
*display: block;
*font-size: 175px;/*约为高度的0.873,200*0.873 约为175*/
*font-family:Arial;/*防止非utf-8引起的hack失效问题,如gbk编码*/
width:200px;
height:200px;
border: 1px solid #eee;
}
.box img {
/*设置图片垂直居中*/
vertical-align:middle;
}</style></head>
<body><div class="box">
<img src="http://pics.taobao.com/bao/album/promotion/taoscars_180x95_071112_sr.jpg" _fcksavedurl="http://pics.taobao.com/bao/album/promotion/taoscars_180x95_071112_sr.jpg" />
</div></body> 查看全部
官方出品:鸿宇科技
鸿宇论坛:bbs.hongyuvip.com

鸿宇QQ群:90664526
 
解决方案:代码如下
<style type="text/css">
div {
display: table-cell;
vertical-align: middle;
text-align: center;
width: 100px;
height: 100px;
border: 1px solid #eee;
}
div > img {
vertical-align: middle;
}
</style>

 div相对与table对于图片的垂直居中支持的并不好,特别对于不同浏览器的兼容性来说,这里我们看下一个简洁的css解决方法: 
在曾经的 淘宝UED 招聘 中有这样一道题目: 

“使用纯CSS实现未知尺寸的图片(但高宽都小于200px)在200px的正方形容器中水平和垂直居中。” 

当然出题并不是随意,而是有其现实的原因,垂直居中是 淘宝 工作中最常遇到的一个问题,很有代表性。 
题目的难点在于两点: 
1.垂直居中; 
2.图片是个置换元素,有些特殊的特性。 
至于如何解决,下面是一个权衡的相对结构干净,CSS简单的解决方法:
.box { 
/*非IE的主流浏览器识别的垂直居中的方法*/
display: table-cell;
vertical-align:middle;
/*设置水平居中*/
text-align:center;
/* 针对IE的Hack */
*display: block;
*font-size: 175px;/*约为高度的0.873,200*0.873 约为175*/
*font-family:Arial;/*防止非utf-8引起的hack失效问题,如gbk编码*/
width:200px;
height:200px;
border: 1px solid #eee;
}
.box img {
/*设置图片垂直居中*/
vertical-align:middle;
}
<div class="box">
<img src="http://pics.taobao.com/bao/album/promotion/taoscars_180x95_071112_sr.jpg" />
</div>

<html><head><style>.box { 
/*非IE的主流浏览器识别的垂直居中的方法*/
display: table-cell;
vertical-align:middle;
/*设置水平居中*/
text-align:center;
/* 针对IE的Hack */
*display: block;
*font-size: 175px;/*约为高度的0.873,200*0.873 约为175*/
*font-family:Arial;/*防止非utf-8引起的hack失效问题,如gbk编码*/
width:200px;
height:200px;
border: 1px solid #eee;
}
.box img {
/*设置图片垂直居中*/
vertical-align:middle;
}</style></head>
<body><div class="box">
<img src="http://pics.taobao.com/bao/album/promotion/taoscars_180x95_071112_sr.jpg" _fcksavedurl="http://pics.taobao.com/bao/album/promotion/taoscars_180x95_071112_sr.jpg" />
</div></body>

解决Google公共库&字体库被屏蔽问题 / 谷歌本地字体库解决方案

鸿宇 发表了文章 • 0 个评论 • 2845 次浏览 • 2018-04-15 18:09 • 来自相关话题

官方出品:鸿宇科技
鸿宇论坛:bbs.hongyuvip.com

鸿宇QQ群:90664526
解决方案:下载本文附件,引用 googleapis-fonts/fonts.css
 
2018年04月15日更新
fonts.googleapis.com 加载慢,所以就从google上扒下来,把css和字体文件都放到本地。@import url(https://fonts.googleapis.com/css?family=Nunito+Sans:300,400,600,700,800,900);替换为:@import url(googleapis-fonts/fonts.css);

下面是下载字体文件的命令行,仅供参考。https://fonts.gstatic.com/s/nunitosans/v3/pe03MImSLYBIv1o4X1M8cc8WAc5iU1EQVg.woff2
https://fonts.gstatic.com/s/nunitosans/v3/pe03MImSLYBIv1o4X1M8cc8WAc5jU1EQVg.woff2
https://fonts.gstatic.com/s/nunitosans/v3/pe03MImSLYBIv1o4X1M8cc8WAc5tU1E.woff2
https://fonts.gstatic.com/s/nunitosans/v3/pe0qMImSLYBIv1o4X1M8cceyI9tScg.woff2
https://fonts.gstatic.com/s/nunitosans/v3/pe0qMImSLYBIv1o4X1M8ccezI9tScg.woff2
https://fonts.gstatic.com/s/nunitosans/v3/pe0qMImSLYBIv1o4X1M8cce9I9s.woff2
https://fonts.gstatic.com/s/nunitosans/v3/pe03MImSLYBIv1o4X1M8cc9iB85iU1EQVg.woff2
https://fonts.gstatic.com/s/nunitosans/v3/pe03MImSLYBIv1o4X1M8cc9iB85jU1EQVg.woff2
https://fonts.gstatic.com/s/nunitosans/v3/pe03MImSLYBIv1o4X1M8cc9iB85tU1E.woff2
https://fonts.gstatic.com/s/nunitosans/v3/pe03MImSLYBIv1o4X1M8cc8GBs5iU1EQVg.woff2
https://fonts.gstatic.com/s/nunitosans/v3/pe03MImSLYBIv1o4X1M8cc8GBs5jU1EQVg.woff2
https://fonts.gstatic.com/s/nunitosans/v3/pe03MImSLYBIv1o4X1M8cc8GBs5tU1E.woff2
https://fonts.gstatic.com/s/nunitosans/v3/pe03MImSLYBIv1o4X1M8cc8aBc5iU1EQVg.woff2
https://fonts.gstatic.com/s/nunitosans/v3/pe03MImSLYBIv1o4X1M8cc8aBc5jU1EQVg.woff2
https://fonts.gstatic.com/s/nunitosans/v3/pe03MImSLYBIv1o4X1M8cc8aBc5tU1E.woff2
https://fonts.gstatic.com/s/nunitosans/v3/pe03MImSLYBIv1o4X1M8cc8-BM5iU1EQVg.woff2
https://fonts.gstatic.com/s/nunitosans/v3/pe03MImSLYBIv1o4X1M8cc8-BM5jU1EQVg.woff2
https://fonts.gstatic.com/s/nunitosans/v3/pe03MImSLYBIv1o4X1M8cc8-BM5tU1E.woff2
  查看全部
官方出品:鸿宇科技
鸿宇论坛:bbs.hongyuvip.com

鸿宇QQ群:90664526
解决方案:下载本文附件,引用 googleapis-fonts/fonts.css
 
2018年04月15日更新
fonts.googleapis.com 加载慢,所以就从google上扒下来,把css和字体文件都放到本地。
@import url(https://fonts.googleapis.com/css?family=Nunito+Sans:300,400,600,700,800,900);
替换为:
@import url(googleapis-fonts/fonts.css);


下面是下载字体文件的命令行,仅供参考。
https://fonts.gstatic.com/s/nunitosans/v3/pe03MImSLYBIv1o4X1M8cc8WAc5iU1EQVg.woff2
https://fonts.gstatic.com/s/nunitosans/v3/pe03MImSLYBIv1o4X1M8cc8WAc5jU1EQVg.woff2
https://fonts.gstatic.com/s/nunitosans/v3/pe03MImSLYBIv1o4X1M8cc8WAc5tU1E.woff2
https://fonts.gstatic.com/s/nunitosans/v3/pe0qMImSLYBIv1o4X1M8cceyI9tScg.woff2
https://fonts.gstatic.com/s/nunitosans/v3/pe0qMImSLYBIv1o4X1M8ccezI9tScg.woff2
https://fonts.gstatic.com/s/nunitosans/v3/pe0qMImSLYBIv1o4X1M8cce9I9s.woff2
https://fonts.gstatic.com/s/nunitosans/v3/pe03MImSLYBIv1o4X1M8cc9iB85iU1EQVg.woff2
https://fonts.gstatic.com/s/nunitosans/v3/pe03MImSLYBIv1o4X1M8cc9iB85jU1EQVg.woff2
https://fonts.gstatic.com/s/nunitosans/v3/pe03MImSLYBIv1o4X1M8cc9iB85tU1E.woff2
https://fonts.gstatic.com/s/nunitosans/v3/pe03MImSLYBIv1o4X1M8cc8GBs5iU1EQVg.woff2
https://fonts.gstatic.com/s/nunitosans/v3/pe03MImSLYBIv1o4X1M8cc8GBs5jU1EQVg.woff2
https://fonts.gstatic.com/s/nunitosans/v3/pe03MImSLYBIv1o4X1M8cc8GBs5tU1E.woff2
https://fonts.gstatic.com/s/nunitosans/v3/pe03MImSLYBIv1o4X1M8cc8aBc5iU1EQVg.woff2
https://fonts.gstatic.com/s/nunitosans/v3/pe03MImSLYBIv1o4X1M8cc8aBc5jU1EQVg.woff2
https://fonts.gstatic.com/s/nunitosans/v3/pe03MImSLYBIv1o4X1M8cc8aBc5tU1E.woff2
https://fonts.gstatic.com/s/nunitosans/v3/pe03MImSLYBIv1o4X1M8cc8-BM5iU1EQVg.woff2
https://fonts.gstatic.com/s/nunitosans/v3/pe03MImSLYBIv1o4X1M8cc8-BM5jU1EQVg.woff2
https://fonts.gstatic.com/s/nunitosans/v3/pe03MImSLYBIv1o4X1M8cc8-BM5tU1E.woff2

 

PhpStorm - 支持dwt和lbi文件设置方法

鸿宇 发表了文章 • 0 个评论 • 2123 次浏览 • 2018-03-07 18:23 • 来自相关话题

官方出品:鸿宇科技
鸿宇论坛:bbs.hongyuvip.com
鸿宇QQ群:90664526
 
PhpStorm->file->settings->Editor->File Types->Smarty->添加 *.dwt 和 *.lbi 




  查看全部
官方出品:鸿宇科技
鸿宇论坛:bbs.hongyuvip.com
鸿宇QQ群:90664526
 
PhpStorm->file->settings->Editor->File Types->Smarty->添加 *.dwt 和 *.lbi 
QQ截图20180307181926.png

 

数据库管理软件 - Navicat for MySQL 专业数据库管理软件 附软件下载链接和使用教程

鸿宇 发表了文章 • 0 个评论 • 2616 次浏览 • 2018-03-07 11:43 • 来自相关话题

官方出品:鸿宇科技
鸿宇论坛:bbs.hongyuvip.com

鸿宇QQ群:90664526
 
1.软件下载链接:
Navicat for MySQL 专业数据库管理软件下载链接:http://pan.baidu.com/s/1qYA3zyc 密码:k6u8
 
2.软件使用教程:
https://jingyan.baidu.com/article/6181c3e074ba0d152ff15346.html 查看全部
官方出品:鸿宇科技
鸿宇论坛:bbs.hongyuvip.com

鸿宇QQ群:90664526
 
1.软件下载链接:
Navicat for MySQL 专业数据库管理软件下载链接:http://pan.baidu.com/s/1qYA3zyc 密码:k6u8
 
2.软件使用教程:
https://jingyan.baidu.com/article/6181c3e074ba0d152ff15346.html

PHP - openssl找不到指定的模块 Warning: PHP Startup: Unable to load dynamic library 'openssl'

鸿宇 发表了文章 • 0 个评论 • 2821 次浏览 • 2018-03-05 09:23 • 来自相关话题

官方出品:鸿宇科技
鸿宇论坛:bbs.hongyuvip.com

鸿宇QQ群:90664526
 
1.在php.ini文件中开启openssl(搜索extension=openssl去掉前面的分号)
 
2.在php.ini文件中,搜索extension_dir,找到extension_dir = "ext",修改为:(记得去掉前面的分号)extension_dir="你的php路径\ext"3.保存php.ini
 
4.记得将PHP的安装目录添加到Windows系统变量%PATH%中
 
5.php7.2下载地址:http://windows.php.net/download#php-7.2 查看全部
官方出品:鸿宇科技
鸿宇论坛:bbs.hongyuvip.com

鸿宇QQ群:90664526
 
1.在php.ini文件中开启openssl(搜索extension=openssl去掉前面的分号)
 
2.在php.ini文件中,搜索extension_dir,找到extension_dir = "ext",修改为:(记得去掉前面的分号)
extension_dir="你的php路径\ext"
3.保存php.ini
 
4.记得将PHP的安装目录添加到Windows系统变量%PATH%中
 
5.php7.2下载地址:http://windows.php.net/download#php-7.2

Html5 - Css3如何使ul中li元素横向排列且不换行

鸿宇 发表了文章 • 0 个评论 • 1986 次浏览 • 2017-12-19 22:02 • 来自相关话题

官方出品:鸿宇科技
官方论坛:bbs.hongyuvip.com
官方QQ群:90664526

 外层div容器宽度固定,ul宽度随li(li宽度固定)的增加而撑开,但是当ul中li的宽度之和大于div时,ul没有撑开,而是li换行了,如何使li不换行?

解决方法:主要是外面容器设置为white-space:nowrap;li设置为display:inline-block;而不是float:left;<!DOCTYPE html>
<html>
<head>
<style>
#pic_list {
display: block;
white-space: nowrap;
width: 500px;
overflow: auto;
}
#pic_list li {
width: 80px;
height: 80px;
margin: 3px;
background: red;
display: inline-block;
}
</style>
</head>
<div id="pic_list">
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
</body>
</html> 查看全部
官方出品:鸿宇科技
官方论坛:bbs.hongyuvip.com
官方QQ群:90664526

 外层div容器宽度固定,ul宽度随li(li宽度固定)的增加而撑开,但是当ul中li的宽度之和大于div时,ul没有撑开,而是li换行了,如何使li不换行?

解决方法:主要是外面容器设置为white-space:nowrap;li设置为display:inline-block;而不是float:left;
<!DOCTYPE html>
<html>
<head>
<style>
#pic_list {
display: block;
white-space: nowrap;
width: 500px;
overflow: auto;
}
#pic_list li {
width: 80px;
height: 80px;
margin: 3px;
background: red;
display: inline-block;
}
</style>
</head>
<div id="pic_list">
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
</body>
</html>

Laravel - Laravel 5.x migrate时报错: 1071 Specified key was too long

Laravel鸿宇 发表了文章 • 0 个评论 • 1936 次浏览 • 2017-08-16 13:26 • 来自相关话题

官方出品:鸿宇科技
官方论坛:hongyuvip.com
官方QQ群:90664526
 
问题描述: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 1000 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 1000 bytes
问题根源

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

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

注:如果是从Laravel 5.3升级到Laravel 5.4,不需要对字符编码做切换。
 
解决方案
 
1.升级MySql版本到5.5.3以上。
 
2.手动配置迁移命令migrate生成的默认字符串长度,在/app/Providers/AppServiceProvider.php中调用Schema::defaultStringLength方法来实现配置public function boot()
{
\Illuminate\Support\Facades\Schema::defaultStringLength(191);

3.打开 config/database.php 约50-51行'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
修改为
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci', 查看全部
官方出品:鸿宇科技
官方论坛:hongyuvip.com
官方QQ群:90664526
 
问题描述: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 1000 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 1000 bytes

问题根源

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

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

注:如果是从Laravel 5.3升级到Laravel 5.4,不需要对字符编码做切换。
 
解决方案
 
1.升级MySql版本到5.5.3以上。
 
2.手动配置迁移命令migrate生成的默认字符串长度,在/app/Providers/AppServiceProvider.php中调用Schema::defaultStringLength方法来实现配置
public function boot()
{
\Illuminate\Support\Facades\Schema::defaultStringLength(191);
}
 
3.打开 config/database.php 约50-51行
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
修改为
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',