数据库模式修改 sql-mode
问题现象
很多小伙伴在本地部署后访问站点会报下图这种错误:
数据获取失败:SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column nc_saas.SysUserRole.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
问题原因
这是因为在MySQL 5.7后,MySQL默认开启了SQL_MODE严格模式,对数据进行严格校验。我们需要修改数据库配置
解决方案
一、本地部署数据库修改
1. 打开配置文件
打开本地部署软件phpstudy,侧边栏选择设置,点击文件位置,选择MySQL

2. 编辑 my.ini 文件
弹出的文件夹中双击打开my.ini文件

3. 修改 sql_mode
找到sql_mode(注意:有点显示的是sql_mode,有点显示的是sql-mode两者都可以),将sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES改为
sql_mode=' '
4. 重启 MySQL
修改完成后,重启mysql
二、宝塔部署数据库修改
1. 选择 MySQL 软件
在宝塔侧边栏选择软件商店,搜索mysql,选中相应的数据库,点击设置
注意:要修改哪个站点的数据库,就选择该站点的数据库版本号
2. 搜索 sql-mode
点击配置修改,按住Ctrl+F键搜索sql-mode(注意:有点显示的是sql_mode,有点显示的是sql-mode两者都可以)
3. 修改配置
将sql-mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_VALUE_ON_ZERO改为
sql-mode=' '
4. 保存配置
修改后点击保存



