Mysql
 sql >> Baza danych >  >> RDS >> Mysql

SQLSTATE[42000]:Błąd składni lub naruszenie dostępu:1055 Wyrażenie #3 listy SELECT nie znajduje się w klauzuli GROUP BY i zawiera niezagregowane

Uruchom:

sudo mysql -u root -p
mysql> SELECT @@global.sql_mode;

(Następnie opcjonalnie skopiuj dane wyjściowe do swoich notatek, na wypadek gdybyś chciał później wrócić do tych oryginalnych ustawień.)

I zmień tryb SQL dla Twojej instancji serwera MySQL:

mysql> SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

(Jeśli kiedykolwiek będziesz chciał wycofać, możesz uruchomić coś takiego jak mysql> SET GLOBAL sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

Bardziej trwałym sposobem (który przetrwa restarty MySQL) byłoby użycie konfiguracji MySQL. Przejdź do /etc/mysql/my.cnf (lub może być konieczne uruchomienie sudo vim /etc/mysql/mysql.conf.d/mysql.cnf ):

  • Dodaj sekcję dla[mysqld] a tuż pod nim dodaj instrukcjęsql_mode ="" lub coś takiego jak sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION" .

  • Uruchom ponownie usługę MySQL:

     sudo systemctl restart mysql
    

(lub zrestartuj usługę sudo mysql )

Zobacz też https://dba.stackexchange.com/a/113153/18098



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dodać identyfikator automatycznego zwiększania do istniejącej tabeli?

  2. Mysql wyszukuje ciąg i liczbę za pomocą MATCH() AGAINST()

  3. Wkładki wsadowe z PHP

  4. Jak wyłączyć indeks w innodb

  5. Sprawdzasz wartość NULL w kolekcji w zapytaniach JPQL?