mysql8与mysql5相比有很多改变,如mysql8中GROUP BY,要显示所有字段,而报错。
实际上,可以使用any_value()函数来抑制错误。
网上有人说需要修改my.ini配制文件,很不推荐,这样会失去mysql8的优势。
推荐使用any_value()函数来抑制错误,最终解决方案,还是推荐mysql8的语法。如:
mysql 5写法:SELECT name, code FROM table GROUP BY name order by id
mysql 8抑制错误写法:SELECT name, any_value(code) AS code FROM table GROUP BY any_order by(id)
为了救急的临时方案,设置不会被保存,当重启数据库时,仍分恢复。以下sql语句可以在mysql数据库中执行,也可以用php代码实现。
select @@GLOBAL.sql_mode;
SET GLOBAL sql_mode='STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION';
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION