SELECT c.TNAME FROM score a,course b,teacher c WHERE a.CNO=b.CNO AND b.TNO=c.TNO GROUP BY a.CNO HAVING COUNT(a.CNO)>5
錯誤:error : Expression #6 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'billing.view_dat_sdr_201903.source' which is not functily dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
查詢后發現是因為“sql_mode=only_full_group_by”導致出錯
1、通過cmd更改sql_mode
set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
重啟后還是會恢復
2、更改配置文件my.ini
原安裝文件里沒有,自己在根目錄下新建
[mysql] # 設置mysql客戶端默認字符集 default-character-set=utf8 [mysqld] #設置3306端口 port = 3306 # 設置mysql的安裝目錄 basedir=D:\mysql\mysql-8.0.11-winx64 # 設置mysql數據庫的數據的存放目錄 datadir=D:\mysql\mysql-8.0.11-winx64/data # 允許最大連接數 max_connections=200 # 服務端使用的字符集默認為8比特編碼的latin1字符集 character-set-server=utf8 sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
重啟依然有效。OK!
下的破解版,文件不是很規范,根目錄里沒有my.ini,只有bin文件夾里有my.ini.txt,重命名為my.ini並加上sql_mode后並不能起作用,還是得放到根目錄下,然而放到根目錄下之后MySQL不能啟動,后發現是
basedir和datadir未下載時默認的位置,是錯的,更改后就好了~