有时候,遇到数据库重复数据,需要将数据进行分组,并取出其中一条来展示,这时就需要用到group by语句。
但是,如果mysql版本过高,当执行group by时,select的字段不属于group by的字段的话,sql语句就会报错。
- 编辑my.cnf文件
- 文件地址一般在:/etc/my.cnf,/etc/mysql/my.cnf
- 找到sql-mode的位置,去掉ONLY_FULL_GROUP_BY
- 然后重启MySQL;
- 有的my.cnf中可能没有sql-mode,需要追加:
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
my.cnf文件完整配置如下
[mysqld]
# 配置文件中增加sql_mode解决问题
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
# 以下为自用配置
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
#表名字大小写是否敏感,1表示不敏感
lower_case_table_names = 1
#最大连接数
max_connections = 500
#最大错误连接数
max_connect_errors = 1000
############################主从复制设置#####################################
server-id=10
#开启mysql binlog功能
log-bin=mysql-bin
#binlog记录内容的方式,记录被操作的每一行
binlog_format = ROW
#对于binlog_format = ROW模式时,减少记录日志的内容,只记录受影响的列
binlog_row_image = minimal
#master status and connection information输出到表mysql.slave_master_info中
master_info_repository = TABLE
#the slave‘s position in the relay logs输出到表mysql.slave_relay_log_info中
relay_log_info_repository = TABLE
#作为从库时生效,想进行级联���制,则需要此参数
log_slave_updates
#作为从库时生效,中继日志relay-log可以自我修复
relay_log_recovery = 1
#作为从库时生效,主从复制时忽略的错误
slave_skip_errors = ddl_exist_errors
[mysql]
default-character-set = utf8mb4
[mysqld_safe]
default-character-set = utf8mb4
[client]
default-character-set = utf8mb4
评论区