Wyłączenie trybu SQL ONLY_FULL_GROUP_BY

    
Na nowszych serwerach MySQL 5.7 i 8.0 ustawiony jest tryb:
ONLY_FULL_GROUP_BY
STRICT_TRANS_TABLES
NO_ZERO_IN_DATE
NO_ZERO_DATE
ERROR_FOR_DIVISION_BY_ZERO
NO_ENGINE_SUBSTITUTION
 

W powyższych wersjach MySQL jest to ustawienie domyślne, które jest wspólne dla całego serwera i nie może być zmieniane dla poszczególnych klientów. Jeśli chcesz zmienić wspomniany tryb dla swojej strony internetowej, koniecznie ustaw go w czasie połączenia z bazą danych (tak jak np. ustawienie zestawu znaków do komunikacji z bazą danych).

Użyj zapytania SET SQL i polecenia mysqli_query (), aby ustawić zachowanie serwera. Polecenie to najlepiej wstawić do skryptu, którym aplikacja łączy się z bazą danych - w przykładzie połączenie nawiązywane jest poleceniem PHP mysqli_connect () i wyłącza ONLY_FULL_GROUP_BY:

  • $connect = mysqli_connect( "server", "login", "haslo", "database" );
    mysqli_query($connect, "SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''))" );