Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да деактивирате стриктния режим на MySQL

Строгият режим на 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}

Горната команда използва „разширяване на скоби BASH“, за да направи резервно копие на файла в оригиналната му директория.

Стъпка №2:Деактивирайте стриктния режим на MySQL

В зависимост от сървъра и текущите конфигурации може да се наложи да редактирате един или и двата от следните файлове на сървъра. Като цяло съответните конфигурационни линии са само в един от тях, но може да бъде и в единия, без да причинява проблеми; така че като цяло е най-добре да проверите и двете.

За да редактирате файловете, ще отворите файла с любимия си редактор на командния ред. В този пример използваме „vim“.

vim /usr/my.cnf
vim /etc/my.cnf

Във vim можете да натиснете “a” или “i”, за да влезете в режим на вмъкване на текст; натискането на клавиша за излизане (Esc) на клавиатурата ви връща в команден режим. За освежаване относно редактирането на файлове с vim, вижте нашия урок за нови потребители:Преглед на текстовия редактор на Vim.

Във всеки файл по-горе ще търсите ред със следното съдържание:

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®.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL тригер при събития за вмъкване/актуализация

  2. Динамично създаване на PHP обект въз основа на низ

  3. Как да генерирам уникален идентификатор в MySQL?

  4. DATABASE() – Вземете текущото име на базата данни в MySQL

  5. Използване на SSH тунелиране като VPN алтернатива