How to resolve “ORDER BY clause is not in SELECT list” caused MySQL 5.7 with SELECT DISTINCT and ORDER BY

前端 未结 8 817
故里飘歌
故里飘歌 2020-12-29 20:21

I installed the new Ubuntu and my code has got a problem with MySQL.

( ! ) Warning: PDOStatement::execute(): SQLSTAT         


        
8条回答
  •  说谎
    说谎 (楼主)
    2020-12-29 20:50

    To get ->distinct('some_column') to work for me, I needed to disable ONLY_FULL_GROUP_BY option in mysql modes.

    Rather than edit the mysql config file on the filesystem, I followed the instructions at Laravel : Syntax error or access violation: 1055 Error and added this to config/database.php:

            'strict' => true,
            'modes' => [
                // 'ONLY_FULL_GROUP_BY', // disabled to allow grouping by one column
                'STRICT_TRANS_TABLES',
                'NO_ZERO_IN_DATE',
                'NO_ZERO_DATE',
                'ERROR_FOR_DIVISION_BY_ZERO',
                'NO_AUTO_CREATE_USER',
                'NO_ENGINE_SUBSTITUTION'
            ],
    

    In my project, the modes property was non-existent, so I simply pasted that bad boy in there.

    NOTE: Make sure you understand that wiping the modes entirely is undesirable, and basically not strict mode, so you will lose debugging warning/error messages about stuff like varchar length exceeded. The trick is to avoid sql_mode="". Notice how above I am using 6 modes and explicitly omitting ONLY_FULL_GROUP_BY.

提交回复
热议问题