报错原文 1 Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘sss.month_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.5及以上功能依赖检测功能。如果启用了ONLY_FULL_GROUP_BY SQL模式(默认情况下),MySQL将拒绝选择列表,HAVING条件或ORDER BY列表的查询引用在GROUP BY子句中既未命名的非集合列,也不在功能上依赖于它们。(5.7.5之前,MySQL没有检测到功能依赖关系,默认情况下不启用ONLY_FULL_GROUP_BY。有关5.7.5之前的行为的说明,请参见“MySQL 5.6参考手册”。)
最有效的解决办法
修改MySQL
配置文件my.ini
(安装路径/my.ini),还有可能是你没有这个配置文件,那就需要自己在安装根目录下新建一个my.ini
配置文件,文件内容参考如下,如果你有这个配置文件,这一步直接跳过
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 [mysql] default-character-set=utf8 [mysqld] port=3306 default_authentication_plugin=mysql_native_password basedir=C:/MySQL8.0.12/ (你的安装路径) datadir=C:/MySQL8.0.12/data/ (你的安装路径) character-set-server=utf8 default-storage-engine=MyIsam collation-server=utf8_unicode_ci init_connect='SET NAMES utf8' innodb_buffer_pool_size=64M innodb_flush_log_at_trx_commit=1 innodb_lock_wait_timeout=120 innodb_log_buffer_size=4M innodb_log_file_size=256M interactive_timeout=120 join_buffer_size=2M key_buffer_size=32M log-error=C:/MySQL8.0.12/data (你的安装路径) log_error_verbosity=1 max_allowed_packet=16M max_connections=100 max_heap_table_size=64M myisam_max_sort_file_size=64G myisam_sort_buffer_size=32M read_buffer_size=512kb read_rnd_buffer_size=4M server_id=1 skip-external-locking=on sort_buffer_size=256kb table_open_cache=256 thread_cache_size=16 tmp_table_size=64M wait_timeout=120 [client] port=3306 default-character-set=utf8
需要设置行的模式,**需要注意不是添加在文件的最后一行
**,见下图,而是添加在【mysqld】类别下
1 2 [mysqld] sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
3. 如果是MySQL8,设置模式是是没有 NO_AUTO_CREATE_USER
这个模式的请看清楚
这里是分割
如果是网络服务器数据库怎么修改?
因为网络数据库服务器,你是没有权限查看安装目录这些文件的,所以只要通过其他方式进行修改,网上的什么set @@....
是错误的,,即便修改成功,重启服务器后又复原了。
1. 登录你的网络云数据库服务器(就是数据库配置的控制中心,我以阿里云为例,其他云平台类似)
2. 点击右边的参数设置
3. 添加模式设置 1 2 下图第2步设置的内容(复制去掉这句话) sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
最后重启数据库服务器即可