laravel group by 42000

 

sql 分组查询异常:

sql error:

SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggr

 

连接数据时候使用了 ONLY_FULL_GROUP_BY 模式,下面是两种处理方式

 

1 , database.php  strict 关闭

strict=>false,

 

 

2 , 设置连接具体模式,strict 下添加 modes

 

strict=>true,
'modes'          => [
    'STRICT_TRANS_TABLES',
    'NO_ZERO_IN_DATE',
    'NO_ZERO_DATE',
    'ERROR_FOR_DIVISION_BY_ZERO',
    'NO_AUTO_CREATE_USER',
    'NO_ENGINE_SUBSTITUTION'
],

 

larave 连接mysql源码片段
/**
     * Set the modes for the connection.
     *
     * @param  \PDO  $connection
     * @param  array  $config
     * @return void
     */
    protected function setModes(PDO $connection, array $config)
    {
        if (isset($config['modes'])) {
            $this->setCustomModes($connection, $config);
        } elseif (isset($config['strict'])) {
            if ($config['strict']) {
                $connection->prepare($this->strictMode($connection))->execute();
            } else {
                $connection->prepare("set session sql_mode='NO_ENGINE_SUBSTITUTION'")->execute();
            }
        }
    }

 

参考来源:

https://learnku.com/articles/6087/laravel-database-the-startup-and-connection-of-database-services

 

上一篇:ERROR 1055 (42000)


下一篇:剑指 Offer 65. 不用加减乘除做加法