mysql 遇到的问题
1、Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column
https://www.cnblogs.com/da19951208/p/9566221.html
select @@sql_mode;
global 的sql_mode的值都为:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
only_full_group_by说明:
only_full_group_by :使用这个就是使用和oracle一样的group 规则, select的列都要在group中,或者本身是聚合列(SUM,AVG,MAX,MIN) 才行,其实这个配置目前个人感觉和distinct差不多的,所以去掉就好 。
解决:
执行以下两个命令:
mysql> set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
mysql> set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
这两个命令,去掉 sql_mode 的 ONLY_FULL_GROUP_BY
2.Lock wait timeout exceeded; try restarting transaction是锁等待超时。
是当前事务在等待其它事务释放锁资源造成的。
解决方法:
在mysql查询中执行以下指令
select * from information_schema.innodb_trx
找出与其他几个有参数不同的线程,找出他的线程号mysql_thread_id
执行命令kill +线程号mysql_thread_id即可解决。
注意:mysql连接后,操作的过程中不要突然停止程序,不然很可能出现这个错误。