Spec-Zone.ru › MariaDB

OLD_MODE

Переменная системы old_mode была введена в MariaDB 5.5.35 для замены переменной old на новую с лучшей гранулярностью.

MariaDB поддерживает несколько различных режимов, которые позволяют настроить его под ваши нужды.

Самые важные способы сделать это — с помощью SQL_MODE и OLD_MODE.

SQL_MODE используется для имитации поведения других SQL-серверов в MariaDB, в то время как OLD_MODE используется для имитации поведения более старых версий MariaDB или MySQL.

OLD_MODE — это строка с различными опциями, разделенными запятыми (',') без пробелов. Опции регистронезависимы.

Обычно OLD_MODE должна быть пустой. Она в основном используется для получения старого поведения при переходе на MariaDB или новую основную версию MariaDB, пока у вас есть время исправить свое приложение.

Между основными версиями MariaDB различные опции, поддерживаемые OLD_MODE, могут быть удалены. Это сделано намеренно, так как мы предполагаем, что приложение будет исправлено для соответствия новому поведению MariaDB между выпусками.

Вы можете проверить локальное и глобальное значение с помощью:

SELECT @@OLD_MODE, @@GLOBAL.OLD_MODE;

Вы можете установить OLD_MODE либо из командной строки (командная строка) (опция --old-mode), либо, задав переменную системы old_mode.

Различные значения OLD_MODE:

Опция Описание
NO_DUP_KEY_WARNINGS_WITH_IGNORE Не выводить предупреждения о дублирующемся ключе при использовании INSERT IGNORE.
NO_PROGRESS_INFO Не показывать информацию о прогрессе в SHOW PROCESSLIST.
UTF8_IS_UTF8MB3 Начиная с MariaDB 10.6.1, основное имя предыдущего 3-байтового utf кодировки символов было изменено на utf8mb3. Если установлено, по умолчанию utf8 является псевдонимом для utf8mb3. Если не установлено, utf8 будет псевдонимом для utf8mb4.
ZERO_DATE_TIME_CAST При преобразовании значения TIME в DATETIME, часть даты будет 0000-00-00, а не CURRENT_DATE (как предписывает стандарт SQL).
IGNORE_INDEX_ONLY_FOR_JOIN Начиная с MariaDB 10.9, опция --old устарела. Эта опция позволяет поведение опции --old для отключения индекса только для объединений, но позволяет его для ORDER BY.
COMPAT_5_1_CHECKSUM Начиная с MariaDB 10.9, опция --old устарела. Эта опция позволяет поведение опции --old для включения проверочной суммы в старом стиле для CHECKSUM TABLE, которое поддерживает MySQL 5.1.

OLD_MODE и сохраненные программы

В отличие от SQL_MODE, сохраненные программы используют текущее значение OLD_MODE пользователя.

Изменения в OLD_MODE не отправляются репликам.

Примеры

В этом примере показано, как получить читабельный список включенных флагов OLD_MODE:

SELECT REPLACE(@@OLD_MODE, ',', '\n');
+---------------------------------------------------+
| REPLACE(@@OLD_MODE, ',', '\n')                    |
+---------------------------------------------------+
| NO_DUP_KEY_WARNINGS_WITH_IGNORE                   |
| NO_PROGRESS_INFO                                  |
+---------------------------------------------------+

Добавление нового флага:

SET @@OLD_MODE = CONCAT(@@OLD_MODE, ',NO_PROGRESS_INFO');

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

Как сбросить флаг:

SET @@OLD_MODE = REPLACE(@@OLD_MODE, 'NO_PROGRESS_INFO', '');

Как проверить, установлен ли флаг:

SELECT @@OLD_MODE LIKE '%NO_PROGRESS_INFO';
+------------------------------------+
| @@OLD_MODE LIKE '%NO_PROGESS_INFO' |
+------------------------------------+
|                                  1 |
+------------------------------------+
Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проверяется предварительно MariaDB. Мнения, информация и мнения, выраженные в этом содержании, не обязательно отражают точку зрения MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/old-mode/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API