SQL_MODE и TIME_ZONE при создании базы данных - PullRequest
0 голосов
/ 06 сентября 2018

Что означают эти параметры и каковы возможные варианты при создании базы данных?

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";

#------------------------------------------------------------
#        Script MySQL.
#------------------------------------------------------------

DROP DATABASE if exists BASETEST;
CREATE DATABASE IF NOT EXISTS BASETEST DEFAULT CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI;
USE BASETEST;

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

SET оператор - это используемый здесь :

для присвоения значений переменным, которые влияют на работу сервера или клиентов

Ни оператор, ни переменные не относятся к созданию базы данных. На самом деле я не думаю, что они должны иметь какой-либо заметный эффект:

  • Вы не можете настроить AUTO_INCREMENT обработку для каждой базы данных (только для сервера или для сеанса).
  • База данных не имеет часового пояса (сервер или текущий сеанс имеют).

Обычно инструменты, которые генерируют дампы SQL, устанавливают некоторые переменные для настройки сеанса и получают предсказуемую среду для запуска команд. Такие переменные обычно берутся из шаблона и не настраиваются для содержимого скрипта.

0 голосов
/ 06 сентября 2018

SET набор одной из переменных MySQL. Некоторые из них являются системными переменными, некоторые из них являются пользовательскими переменными ...

SET SQL_MODE:

SQL_MODE - системные переменные, и вы можете увидеть все возможные режимы в документации.

NO_AUTO_VALUE_ON_ZERO:

NO_AUTO_VALUE_ON_ZERO влияет на обработку столбцов AUTO_INCREMENT. Обычно вы генерируете следующий порядковый номер для столбца, вставляя в него либо NULL, либо 0. NO_AUTO_VALUE_ON_ZERO подавляет это поведение для 0, так что только NULL генерирует следующий порядковый номер.

SET time_zone:

SET time_zone = "+00:00" Устанавливает часовой пояс сеанса на UTC .

Подробнее: Как установить часовой пояс MySQL?

...