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

Jak wyłączyć ścisły tryb SQL w MySQL 5.7?

Jeśli Twoja aplikacja została napisana dla starszych wersji MySQL i nie jest zgodna ze ścisłym trybem SQL w MySQL 5.7, możesz wyłączyć ścisły tryb SQL. Na przykład aplikacje takie jak WHMCS 6 i Craft 2 nie obsługują ścisłego trybu SQL.

Jeśli używasz WHMCS 7, zapoznaj się z naszym artykułem na temat dostosowywania MySQL do WHMCS 7.

Aby wyłączyć ścisły tryb SQL, SSH na swoim serwerze jako root i utwórz nowy plik konfiguracyjny za pomocą nano lub wybrany przez Ciebie redaktor:

sudo nano /etc/mysql/conf.d/disable_strict_mode.cnf

W pliku wpisz te dwie linie:

[mysqld]
sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

Zapisz plik, naciskając CTRL + X , a następnie y , a następnie ENTER aby potwierdzić zmiany.

Na koniec uruchom ponownie MySQL za pomocą tego polecenia:

sudo service mysql restart

Ta zmiana wyłącza dwa ustawienia trybu SQL, STRICT_TRANS_TABLES i ONLY_FULL_GROUP_BY, które zostały dodane w MySQL 5.7 i powodują problemy dla niektórych starszych aplikacji.

Potwierdzanie, że ścisły tryb SQL jest wyłączony

Możesz potwierdzić, że ścisły tryb SQL jest wyłączony, uruchamiając to polecenie jako root :

sudo mysql -i -BN -e 'SELECT @@sql_mode' | grep -E 'ONLY_FULL_GROUP_BY|STRICT_TRANS_TABLES'

Jeśli tryb ścisły jest wyłączony, nie zobaczysz żadnych danych wyjściowych tego polecenia.

Jeśli wyłączenie trybu ścisłego powoduje jakiekolwiek problemy, możesz go ponownie włączyć, usuwając ten plik i ponownie uruchamiając MySQL.

Jak wyglądają ścisłe błędy trybu SQL

Jeśli Twoja aplikacja nie jest zgodna ze ścisłym trybem SQL, często zobaczysz błędy SQL, takie jak:

SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of
SELECT list is not in GROUP BY clause and contains nonaggregated column
'yourdbname.tblannouncements.date' which is not functionally dependent on
columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Order według liczby, wartości null trwają

  2. LAST_INSERT_ID() MySQL

  3. Jak sprawdzić, czy kolumna jest pusta lub null w MySQL?

  4. Jak działa funkcja SUBSTR() w MySQL

  5. Błąd MySql:1364 Pole 'display_name' nie ma wartości domyślnej