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 | +------------------------------------+
© 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/