Строгият режим на MySQL и MariaDB контролира как се обработват невалидни или липсващи стойности в заявките за промяна на данни; това включва изрази INSERT, UPDATE и CREATE TABLE. При активиран строг режим на MySQL, който е състоянието по подразбиране, невалидни или липсващи данни могат да причинят предупреждения или грешки при опит за обработка на заявката.
Когато стриктният режим е деактивиран, същата заявка ще има невалидни или липсващи стойности, коригирани и ще произведе просто предупреждение. Това може да изглежда като предпочитания резултат, но при деактивиран строг режим някои действия могат да доведат до неочаквани резултати; например, когато стойността, която се вмъква, надвишава максималното ограничение за знаци, тя ще бъде съкратена, за да отговаря на ограничението.
Има различни причини, поради които стриктният режим на MySQL може да се наложи да бъде деактивиран, но най-често срещаната е, когато сървър работи с WHMCS — това е изискване на този инструмент.
Проверка преди полета
- Тези инструкции са предназначени специално за деактивиране на строг режим на MySQL на управляван Liquid Web сървър с cPanel.
- Сървърът трябва да работи или MySQL 5.6/5.7, или MariaDB 10.x
- Достъп до команден ред и root ниво през SSH ще са необходими, за да следвате този урок.
Стъпка №1:Правете резервни копия, винаги!
Всеки път, когато променяте файлове на сървър, винаги е най-добрата практика предварително да направите някаква форма на резервно копие. Това гарантира, че имате начин да върнете промените, ако нещо се обърка; също така е полезно, защото помага да се проследи кога и какви промени са направени.
Докато сте влезли в SSH с root потребител, направете следното:
cp -a /usr/my.cnf{,.strict.bak}
cp -a /etc/my.cnf{,.strict.bak}
Стъпка №2:Деактивирайте стриктния режим на MySQL
В зависимост от сървъра и текущите конфигурации може да се наложи да редактирате един или и двата от следните файлове на сървъра. Като цяло съответните конфигурационни линии са само в един от тях, но може да бъде и в единия, без да причинява проблеми; така че като цяло е най-добре да проверите и двете.
За да редактирате файловете, ще отворите файла с любимия си редактор на командния ред. В този пример използваме „vim“.
vim /usr/my.cnf
vim /etc/my.cnf
Във всеки файл по-горе ще търсите ред със следното съдържание:
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
Ако намерите ред, подобен на горния, който задава променливата `sql_mode`, тогава ще трябва да го замените със следния ред, за да деактивирате стриктния режим на MySQL.
sql_mode=""
След като тази корекция бъде направена или сте потвърдили, че файлът не трябва да се коригира, ще запишете и затворите файла.
Стъпка №3:Рестартирайте услугата MySQL
И накрая, за да направите тези промени ефективни, ще трябва да рестартирате услугата MySQL, тъй като тя ще чете конфигурационните файлове само когато първоначално се зареди. За да принудите MySQL да използва новите конфигурационни файлове, ще направите следното:
За сървъри на CentOS 7:systemctl restart mysql
За CentOS 6 и по-стара версия:/etc/init.d/mysql restart
След издаване на тази команда на сървъра MySQL услугата ще бъде рестартирана и ще зареди направените промени. Ако всички указания бяха следвани и изпълнени, тогава строг режим на MySQL вече трябва да бъде деактивиран.
За да проверите дали процесът е завършен правилно, можете да изпълните следното:
mysql -e "SELECT @@sql_mode;"
Резултатът може да изглежда подобно на следното:
+--------------------------------------------+
| @@sql_mode
+--------------------------------------------+
| NO_AUTO_CREATE_USER
+--------------------------------------------+
Ако имате въпроси или не ви е удобно да правите тези промени сами, не се колебайте да се свържете с поддръжката на Heroic®.