当前位置: 首页 > 后端技术 > PHP

Mysql8.0及以上,关于only_full_group_by

时间:2023-03-29 22:03:16 PHP

mysql8.0及以上,关于only_full_group_by:ERROR1055(42000):Expression#7ofSELECTlistisnotinGROUPBYclauseandcontainsnonaggregatedcolumn'postscan.verifyDelayLog.auditor'which在功能上不依赖于GROUPBY子句中的列;这个不兼容sql_mode=only_full_group_by在mysql8.0以上的版本中,对于groupby的聚合操作,如果select中的column,没有在groupby中出现,那么这个sql是不合法的。在MySQL配置中,添加配置sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION,sql_mode的常用值如下:列,没有出现在GROUPBY中,那么这个SQL是非法的,因为列不在GROUPBY子句中。NO_AUTO_VALUE_ON_ZERO:该值影响自增列的插入。默认情况下,插入0或NULL意味着生成下一个自动增量值。如果用户想要插入值0并且该列是自增的,则此选项很有用。STRICT_TRANS_TABLES:在这种模式下,如果一个值不能插入事务表,则当前操作中断,对非事务表没有限制。NO_ZERO_IN_DATE:在严格模式下,日期和月份不允许为零。NO_ZERO_DATE:设置这个值,mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告。ERROR_FOR_DIVISION_BY_ZERO:在INSERT或UPDATE期间,如果数据被零除,则生成错误而不是警告。如果没有给出模式,当数据除以零时,MySQL返回NULL。NO_AUTO_CREATE_USER:GRANT禁止创建密码为空的用户。NO_ENGINE_SUBSTITUTION:如果禁用或未编译所需的存储引擎,则会引发错误。如果未设置该值,则使用默认存储引擎并抛出异常。PIPES_AS_CONCAT:对待“||”作为字符串连接运算符,而不是or运算符,这与Oracle数据库相同,类似于字符串连接函数Concat。