Режим MySQL “NO_ENGINE_SUBSTITUTION”, что это такое?

175
06 января 2019, 23:40

Что значит режим MySQL NO_ENGINE_SUBSTITUTION?

В официальной доке сказано:

Control automatic substitution of the default storage engine when a statement such as CREATE TABLE or ALTER TABLE specifies a storage engine that is disabled or not compiled in.

By default, NO_ENGINE_SUBSTITUTION is enabled.

Because storage engines can be pluggable at runtime, unavailable engines are treated the same way:

With NO_ENGINE_SUBSTITUTION disabled, for CREATE TABLE the default engine is used and a warning occurs if the desired engine is unavailable. For ALTER TABLE, a warning occurs and the table is not altered.

With NO_ENGINE_SUBSTITUTION enabled, an error occurs and the table is not created or altered if the desired engine is unavailable.

Но мне так и не стало ясно что это и для чего.

Объясните, кто действительно знает, простым и понятным языком предназначение этого режима, можно с примерами. Спасибо.

Answer 1

Представьте, что вы делаете некую операцию, влияющую на тип таблицы (движок, механизм хранения, ENGINE), устанавливая его при CREATE TABLE или изменяя при ALTER TABLE.

Возможны варианты:

  1. В запросе не указан тип таблицы - будет использован тип таблиц по умолчанию.
  2. В запросе указан тип таблицы, и он доступен - будет использоваться указанный тип.
  3. В запросе указан тип таблицы, но он недоступен (отключен или не скомпилирован) и NO_ENGINE_SUBSTITUTION отключен - будет использован тип таблиц по умолчанию (для CREATE TABLE) либо запрос не будет выполнен (для ALTER TABLE), но в любом случае ошибки не возникнет (зато будет выдано предупреждение).
  4. В запросе указан тип таблицы, но он недоступен (отключен или не скомпилирован) и NO_ENGINE_SUBSTITUTION включен - операция не будет выполнена, будет выдано сообщение об ошибке.

P.S. Отключенный/недоступный тип таблиц нельзя сделать дефолтным. Дефолтный тип таблиц нельзя отключить.

READ ALSO
Проблема после Build-а игры на Android

Проблема после Build-а игры на Android

Сама игра запускается, но на экране видно только главного персонажа и платформы, которую даже не создавал яВ самом Unity всё работает хорошо

186
Как в Roslyn компиляторе установить версию .Net Framework?

Как в Roslyn компиляторе установить версию .Net Framework?

Возникла проблема, при компиляции динамического кода не могу поставить версию фреймворка

171
Поддержка JWT авторизации

Поддержка JWT авторизации

Делаю Web приложение, которое должно пускать в некоторые свои части пользователя через клиент-приложениеРешил использовать для этого JWT

166