Niektoré Obsah Systémy správy, ako napríklad Typo, Contao, Contenido alebo iné systémy, majú problémy s tým, že MySQL 5.1 existujúci prísny režim. Toto predvolené nastavenie je aktívne od verzie 5.7.
Aby bolo možné používať aj tieto systémy CMS, stále existuje možnosť vypnúť prísny režim na strane servera. Samozrejme, je to len podmienečne odporúčané.
Čo robí prísny režim?
Striktný režim MySQL/MariaDB riadi, ako sa v dotazoch na zmenu údajov vrátane deklarácií INSERT, UPDATE a CREATE spracúvajú neplatné alebo chýbajúce hodnoty.
Týmto spôsobom sa neplatné alebo chýbajúce Údaje viesť k varovaniam alebo chybám pri vykonávaní dotazu SQL. Pri vypnutom režime scrict sa neplatné dotazy alebo chýbajúce hodnoty upravia a vydá sa jednoduché upozornenie. To môže viesť k neočakávaným výsledkom.
Príkladom môže byť obmedzenie počtu znakov. Pri vypnutom striktnom režime sa prebytočné znaky skrátia, aby sa zmestili.
Prečo sa to vyskytuje len v niektorých systémoch CMS?
Môžeme len špekulovať. Pravdepodobne je kód taký rozsiahly, že ho nikto nedokáže prehliadnuť. Na jednej strane systém správy obsahu pracovať veľa ľudí, niekedy prinášajú jednotlivé funkcie, na ktoré sa potom už roky nepozerá. Pokiaľ sa nevyskytnú žiadne vážne problémy, nie je to až také zlé.
Pri podobne postihnutom systéme, ako je whmcs, to už vyzerá inak. Ak sú dôležité údaje odrezané, vedie to k nesprávnemu prideľovaniu. To sa potom môže stať problematickým v prípade fakturácie.
Kde sa dá táto príručka použiť?
Pokyny sa vzťahujú na systémy Linux s MySQL 5.6/5.7 alebo MariaDB 10.1 a vyššie s aktívnym prísnym režimom.
Na vykonanie zmien je potrebný koreňový prístup. Naše pokyny vždy odkazujú na Centos Linux. V iných distribúciách môžu byť konfiguračné súbory umiestnené v iných adresároch.
Krok 1: Vytvorenie záloh
Pri úprave súborov by ste si mali vždy vytvoriť zálohu. Je príliš jednoduché niečo neúmyselne vymazať.
cp -a /etc/my.cnf{,.strict.bak}
Príkaz vytvorí súbor my.cnf.strict.bak zo súboru my.cnf v tom istom adresári.
Krok 2: Zakázanie prísneho režimu MySQL
V súbore sa zvyčajne nenachádza sql_mode=..., takže do sekcie by bolo potrebné pridať nasledujúci riadok [mysqld] :
sql_mode=""
Krok 3: Reštartovanie služby MySQL
Po úprave súboru je potrebné službu reštartovať, aby sa zmeny uplatnili.
systemctl restart mariadb
Po reštartovaní služby môžete skontrolovať nastavenie vykonaním nasledujúceho príkazu. Tu je príklad s heslom na Server Plesk. Prípadne s príkazom root a heslom.
mysql -uadmin -p`cat /etc/psa/.psa.shadow` -e "SELECT @@sql_mode;"
Potom by sa mal zobraziť nasledujúci návrat:
+————+
| @@sql_mode |
+————+
| |
+————+