sql >> Databáze >  >> RDS >> Mysql

Jak zakázat přísný režim SQL v MySQL 5.7

Pokud byla vaše aplikace napsána pro starší verze MySQL a není kompatibilní s přísným režimem SQL v MySQL 5.7, můžete přísný režim SQL zakázat. Například aplikace jako WHMCS 6 a Craft 2 nepodporují striktní režim SQL.

Pokud používáte WHMCS 7, přečtěte si náš článek o přizpůsobení MySQL pro WHMCS 7.

Chcete-li zakázat přísný režim SQL, připojte SSH na váš server jako root a vytvořte nový konfigurační soubor pomocí nano nebo editor dle vašeho výběru:

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

Do souboru zadejte tyto dva řádky:

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

Uložte soubor stisknutím CTRL + X , pak y a poté ENTER pro potvrzení změn.

Nakonec restartujte MySQL pomocí tohoto příkazu:

sudo service mysql restart

Tato změna zakáže dvě nastavení režimu SQL, STRICT_TRANS_TABLES a ONLY_FULL_GROUP_BY, která byla přidána do MySQL 5.7 a způsobují problémy u některých starších aplikací.

Potvrzení, že je přísný režim SQL zakázán

Přísný režim SQL můžete potvrdit spuštěním tohoto příkazu jako root :

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

Pokud je přísný režim zakázán, neuvidíte žádný výstup tohoto příkazu.

Pokud vám deaktivace přísného režimu způsobuje nějaké problémy, můžete jej znovu povolit odstraněním tohoto souboru a restartováním MySQL znovu.

Jak vypadají chyby striktního režimu SQL

Pokud vaše aplikace není kompatibilní s přísným režimem SQL, často se zobrazí chyby SQL, například:

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. Jak zakážu referenční integritu v Postgres 8.2?

  2. Mohu použít ADFS 2.0 k ověření určitých uživatelů proti SQL Server?

  3. Jak vybrat pouze 1 řádek z Oracle SQL?

  4. Výběr databáze pro vytvoření dvou propojených tabulek?