Macbook解决MySQL不能使用groupby分组查询

这篇博客介绍了如何在MacOS上解决MySQL的only_full_group_by问题,通过编辑my.cnf文件并在[mysqld]部分添加sql_mode配置。同时,提供了my.cnf的完整内容,包括其他关键配置如字符集、缓存大小等,以优化MySQL服务器的性能。最后,讲解了如果已有my-default.cnf文件,如何复制到/etc目录下,并修改权限。

博主环境:
MacBook MacOs 11.4
MySQL 5.7.30 for macos10.14 (x86_64)

首先查看mysql安装目录下support-files文件夹下是否有my-default.cnf这个文件

image-20220311133714639

如果没有my-default.cnf文件,就到到 /etc 下创建一个my.cnf文件

sudo vim /etc/my.cnf

my.cnf

# Example MySQL config file for small systems.
#
# This is for a system with little memory (<= 64M) where MySQL is only used
# from time to time and it's important that the mysqld daemon
# doesn't use much resources.
#
# MySQL programs look for option files in a set of
# locations which depend on the deployment platform.
# You can copy this option file to one of those
# locations. For information about these locations, see:
# http://dev.mysql.com/doc/mysql/en/option-files.html
#
# In this file, you can use all long options that a program supports.
# If you want to know which options a program supports, run the program
# with the "--help" option.
 
# The following options will be passed to all MySQL clients
[client]
default-character-set=utf8
#password   = your_password
port        = 3306
socket      = /tmp/mysql.sock
 
# Here follows entries for some specific programs
 
# The MySQL server
[mysqld]
#解决only_full_group_by的问题
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
 
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
port        = 3306
socket      = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 16K
max_allowed_packet = 1M
table_open_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 128K
 
# Don't listen on a TCP/IP port at all. This can be a security enhancement,
# if all processes that need to connect to mysqld run on the same host.
# All interaction with mysqld must be made via Unix sockets or named pipes.
# Note that using this option without enabling named pipes on Windows
# (using the "enable-named-pipe" option) will render mysqld useless!
#
#skip-networking
server-id   = 1
 
# Uncomment the following if you want to log updates
#log-bin=mysql-bin
 
# binary logging format - mixed recommended
#binlog_format=mixed
 
# Causes updates to non-transactional engines using statement format to be
# written directly to binary log. Before using this option make sure that
# there are no dependencies between transactional and non-transactional
# tables such as in the statement INSERT INTO t_myisam SELECT * FROM
# t_innodb; otherwise, slaves may diverge from the master.
#binlog_direct_non_transactional_updates=TRUE
 
# Uncomment the following if you are using InnoDB tables
#innodb_data_home_dir = /usr/local/mysql/data
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = /usr/local/mysql/data
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
#innodb_buffer_pool_size = 16M
#innodb_additional_mem_pool_size = 2M
# Set .._log_file_size to 25 % of buffer pool size
#innodb_log_file_size = 5M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50
 
[mysqldump]
quick
max_allowed_packet = 16M
 
[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates
 
[myisamchk]
key_buffer_size = 8M
sort_buffer_size = 8M
 
[mysqlhotcopy]
interactive-timeout

保存并退出。

上面的文件已经解决了only_full_group_by的问题,其他的配置请按需修改。

修改文件执行权限。

sudo chmod 664 /etc/my.cnf

如果有my-deafult.cnf

直接复制一份到/etc 目录下即可

mv /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf

在my.cnf 的[mysqld]添加一行

[mysqld]
#解决only_full_group_by的问题
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTIOxwNxw

参考文章:https://www.sunjs.com/article/detail/ce6ff22e2ef841d59da486a681e7a3c0.html

https://www.sunjs.com/article/detail/d53a75484154402fa3fbcf33c51b23b9.html

首先,你需要在MacOS上安装MySQL。你可以从MySQL官网上下载相应的安装包,安装完成后,你可以通过命令行来启动MySQL服务。 启动MySQL服务后,你需要使用命令行客户端来连接MySQL。你可以使用以下命令: ``` mysql -u <username> -p ``` 其中,`<username>`是你的MySQL用户名。输入以上命令后,系统会提示你输入密码。输入密码后,你将进入MySQL命令行客户端。 在命令行客户端中,你可以执行各种MySQL命令,包括创建数据库、创建表、插入数据、查询数据等等。 以下是一些常用的MySQL命令: - 创建数据库: ``` CREATE DATABASE <database_name>; ``` 其中,`<database_name>`是你要创建的数据库名称。 - 选择数据库: ``` USE <database_name>; ``` 其中,`<database_name>`是你要选择的数据库名称。 - 创建表: ``` CREATE TABLE <table_name> ( <column_name> <data_type>, <column_name> <data_type>, ... ); ``` 其中,`<table_name>`是你要创建的表名,`<column_name>`是列名,`<data_type>`是数据类型。 - 插入数据: ``` INSERT INTO <table_name> (<column_name>, <column_name>, ...) VALUES (<value>, <value>, ...), (<value>, <value>, ...), ... ``` 其中,`<table_name>`是你要插入数据的表名,`<column_name>`是列名,`<value>`是值。 - 查询数据: ``` SELECT <column_name>, <column_name>, ... FROM <table_name> WHERE <condition>; ``` 其中,`<column_name>`是列名,`<table_name>`是表名,`<condition>`是查询条件。 以上是一些常用的MySQL命令,你可以根据自己的需要来执行相应的命令。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值