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

Актуализирайте SQL режима в MySQL

MySQL промени стойността по подразбиране на променливата sql_mode от предишни издания, което нарушава съществуващия код в няколко приложения. Този урок обяснява как да промените sql_mode според характеристиките на приложението. Той също така предоставя стъпките за запазване на тази стойност при рестартиране на сървъра.

Бележки :Можете също да следвате уроците за MySQL – Как да инсталирате MySQL 8 в Ubuntu, Как напълно да премахнете MySQL от Ubuntu и да научите основни SQL заявки с помощта на MySQL.

Стойността по подразбиране на променливата sql_mode в MySQL 8 е, както е показано по-долу.

# Default - sql_mode
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

В моя случай опцията ONLY_FULL_GROUP_BY нарушава кода, следователно ще го премахна за демонстрация цел .

Актуализиране директно

Можем директно да актуализираме стойността на sql_mode като използвате командите, както е показано по-долу.

# Login
mysql -u root -p

# Globally
SET GLOBAL sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION";

# Session
SET SESSION sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION";

Стойността sql_mode ще бъде променена с помощта на гореспоменатите заявки. Проблемът е, че променливата връща стойността си по подразбиране при рестартиране на сървъра. Можем да запазим стойността, както е показано в следващия раздел.

Постоянно актуализиране

Можем да запазим стойността на sql_mode, като актуализираме my.cnf файл. Местоположението на този файл се различава в зависимост от средата и версията на сървъра. Най-често срещаните местоположения на този файл включват/etc/my. cnf , /etc/mysql /my.cnf , и /usr /etc/my.cnf . Може също да е на локалния път на потребителя ~/.my.cnf . На моята система с Ubuntu 18.04 LTS и MySQL 8 намерих този файл на адрес /etc/mysql /my.cnf .

НаLinux Mint 18 , местоположението на файла е /usr /my.cnf . Можете също да търсите във файла, като използвате командата, както е показано по-долу.

# Search the default config
mysqld --verbose --help | grep -A 1 "Default options"

# Output
Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf

MySQL сървърът ще разгледа гореспоменатите места за конфигурации по подразбиране както на системно ниво, така и на локално ниво. Актуализирайте файла my.cnf, както е показано по-долу. Използвах нано редактора за демонстрация цел .

# Update my.cnf
sudo nano /etc/mysql/my.cnf

# Scroll down and update the file as shown below

...
...
# # The MySQL Server configuration file. # # For explanations see # http://dev.mysql.com/doc/mysql/en/server-system-variables.html # * IMPORTANT: Additional settings that can override those from this file! # The files must end with '.cnf', otherwise they'll be ignored. # !includedir /etc/mysql/conf.d/ !includedir /etc/mysql/mysql.conf.d/ [mysqld] sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"

Сега запазете файла и излезте от редактора. Не забравяйте да включите [mysqld] над променливата.

Рестартирайте MySQL сървъра, за да зададете стойността на променливата sql_mode, както е конфигурирана от нас във файла my.cnf, както е показано по-горе.

# Using init
sudo /etc/init.d/mysqld restart
# OR
sudo /etc/init.d/mysql restart

# Using service
sudo service mysql restart

# Using systemd
sudo systemctl restart mysqld.service
# OR
sudo systemctl restart mysql

Резюме

В този урок актуализирахме стойността на променливата MySQL sql_mode и го запази за постоянно при рестартиране на сървъра.


  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. Най-добрите MySQL блогове и уебсайтове за администратори на бази данни

  3. Научете MySQL / MariaDB за начинаещи – част 1

  4. brew инсталирайте mysql на macOS

  5. Разбиране на дневника за одит на ProxySQL