Някои Съдържание Системи за управление като Typo, Contao, Contenido или други системи имат проблеми с от MySQL 5.1 съществуващ строг режим. Това е активна настройка по подразбиране от версия 5.7 насам.
За да можете да използвате тези CMS системи, все още е възможно да изключите строгия режим от страна на сървъра. Разбира се, това е препоръчително само в ограничена степен.
Какво прави стриктният режим?
Строгият режим на MySQL/MariaDB контролира начина, по който се обработват невалидните или липсващите стойности в заявките за промяна на данни, включително декларациите INSERT, UPDATE и CREATE.
По този начин невалидни или липсващи Данни водят до предупреждения или грешки при извършване на SQL заявката. При изключен режим scrict невалидните заявки или липсващите стойности се коригират и се издава просто предупреждение. Това може да доведе до неочаквани резултати.
Пример за това е ограничението на символите. Ако строгият режим е изключен, излишните символи се отрязват, за да се поберат.
Защо това се случва само при някои системи CMS?
Можем само да спекулираме. Кодът вероятно е толкова обширен, че никой не може да го види. На една система за управление на съдържанието много хора работят по този въпрос, понякога въвеждат отделни функции, които след това не се разглеждат отново в продължение на години. Докато не възникнат сериозни проблеми, това не е толкова лошо.
При система като whmcs, която също е засегната, ситуацията е различна. Ако важните данни са прекъснати, това води до неправилно разпределение. Това може да се окаже проблематично в случай на фактуриране.
Къде може да се приложи това ръководство?
Инструкциите се отнасят за Linux системи с MySQL 5.6/5.7 или MariaDB 10.1 и по-високи, за които е активен строгият режим.
За извършване на промените е необходим достъп с корен. Нашите инструкции винаги се отнасят до Centos Linux. В други дистрибуции конфигурационните файлове може да се намират в други директории.
Стъпка 1: Създаване на резервни копия
Когато редактирате файлове, винаги трябва да правите резервно копие. Твърде лесно е да изтриете нещо по невнимание.
cp -a /etc/my.cnf{,.strict.bak}
Командата създава файл my.cnf.strict.bak от файла my.cnf в същата директория.
Стъпка 2: Деактивиране на строгия режим на MySQL
Обикновено във файла няма sql_mode=..., така че в раздела трябва да се добави следният ред [mysqld] :
sql_mode=""
Стъпка 3: Рестартиране на услугата MySQL
След като редактирате файла, услугата трябва да се рестартира, за да се приложат промените.
systemctl restart mariadb
След като услугата бъде рестартирана, можете да проверите настройката, като изпълните следната команда. Ето един пример с паролата на Сървър на Plesk. Алтернативно с root и паролата.
mysql -uadmin -p`cat /etc/psa/.psa.shadow` -e "SELECT @@sql_mode;"
След това трябва да се появи следната декларация:
+————+
| @@sql_mode |
+————+
| |
+————+