第一种方案是修改my.cnf文件,但是我的数据库安装目录里根本没有这个文件;
第二种方案是修改sql_mode
虽然可以解决问题,但是这种方案毕竟需要动配置,可能会影响其他网站,所以慎重调整,这种一般都是sql的问题
- sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
例如:
这种联查就会报刚才的错误,究其原因就是 :GROUP BY 子句要确保 SELECT 列表中的非聚合列都包含在 GROUP BY 子句中,或者使用聚合函数
- select A.*,C.attachment,C.remote,C.id as attid,D.flag,D.id as flagid from (dr_1_products as A left join dr_1_products_flag as D on A.id=D.id ) left join dr_attachment_data as C on A.thumb=C.id where 1=1 AND A.catid IN (9,10,11,12,13) AND A.thumb <>'' GROUP BY A.id order by A.displayorder desc,A.id desc limit 8
所以刚才的group by 需要改成:
要把所有的列加进去,这样就可以了
- GROUP BY A.id, C.attachment, C.remote, C.id, D.flag, D.id
文章点评