sql >> Database teknologi >  >> RDS >> Mysql

Sådan deaktiveres streng SQL-tilstand i MySQL 5.7

Hvis din app er skrevet til ældre versioner af MySQL og ikke er kompatibel med streng SQL-tilstand i MySQL 5.7, kan du deaktivere streng SQL-tilstand. For eksempel understøtter apps som WHMCS 6 og Craft 2 ikke streng SQL-tilstand.

Hvis du bruger WHMCS 7, kan du se vores artikel om tilpasning af MySQL til WHMCS 7.

For at deaktivere streng SQL-tilstand, SSH ind på din server som root og opret en ny konfigurationsfil ved hjælp af nano eller redaktøren efter eget valg:

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

Indtast disse to linjer i filen:

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

Gem filen ved at trykke på CTRL + X , derefter y , derefter ENTER for at bekræfte ændringer.

Til sidst skal du genstarte MySQL med denne kommando:

sudo service mysql restart

Denne ændring deaktiverer to indstillinger for SQL-tilstand, STRICT_TRANS_TABLES og ONLY_FULL_GROUP_BY, som blev tilføjet i MySQL 5.7 og forårsager problemer for nogle ældre applikationer.

Bekræftelse af, at streng SQL-tilstand er deaktiveret

Du kan bekræfte, at streng SQL-tilstand er deaktiveret ved at køre denne kommando som root :

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

Hvis streng tilstand er deaktiveret, vil du ikke se noget output fra den kommando.

Hvis deaktivering af streng tilstand forårsager problemer for dig, kan du genaktivere den ved at slette den fil og genstarte MySQL igen.

Hvordan ser strenge SQL-tilstandsfejl ud

Hvis din app ikke er kompatibel med streng SQL-tilstand, vil du ofte se SQL-fejl såsom:

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. Sådan fungerer SQL Server SOUNDEX()-funktionen

  2. Sådan fungerer SQLite Nullif()

  3. Skift SQL-databasemistænkt tilstand til normal tilstand med forespørgsel

  4. ORA-24247:netværksadgang nægtet af adgangskontrolliste (ACL)