Spec-Zone .ru
спецификации, руководства, описания, API
|
Этот раздел обсуждает, как MySQL тиражируется CREATE TABLE ... SELECT
операторы.
MySQL 5.7 не позволяет a CREATE TABLE
... SELECT
оператор, чтобы произвести любые изменения в таблицах кроме таблицы, которая составляется
оператором. Некоторые более старые версии MySQL, который разрешал этим операторам делать так; это означает что,
при использовании основанной на операторе репликации между MySQL 5.6 или более поздним ведомым устройством и
ведущим устройством, выполняющим предыдущую версию MySQL, a CREATE TABLE ... SELECT
порождение оператора изменяется в других таблицах на
основных сбоях на ведомом устройстве, заставляя репликацию остановиться. Чтобы препятствовать этому происходить,
следует использовать построчную репликацию, переписать незаконный оператор прежде, чем выполнить это на ведущем
устройстве, или обновить ведущее устройство до MySQL 5.7. (Если Вы хотите обновлять ведущее устройство, имейте в
виду что такой CREATE TABLE ...
SELECT
оператор перестанет работать после обновления, если это не будет переписано, чтобы удалить
любые побочные эффекты на других таблицах.) Это не проблема при использовании построчной репликации, потому что
оператор регистрируется как a CREATE TABLE
оператор с любыми изменениями, чтобы представить в виде таблицы данные, регистрируемые, как вставляют строка
события, а не как все CREATE TABLE
... SELECT
.
Эти поведения не зависят от версии MySQL:
CREATE
TABLE ... SELECT
всегда выполняет неявную фиксацию (Раздел
13.3.3, "Операторы Который Причина Неявная Фиксация").
Если целевая таблица не существует, журналирование происходит следующим образом.
Это не имеет значения ли IF NOT EXISTS
присутствует.
STATEMENT
или MIXED
формат: оператор регистрируется как записано.
ROW
формат: оператор регистрируется как a
CREATE TABLE
оператор следовал серией событий вставлять-строки.
Если оператор перестал работать, ничто не регистрируется. Это включает случай, что
целевая таблица существует и IF NOT EXISTS
не дается.
Когда целевая таблица существует и IF NOT EXISTS
дается, MySQL 5.7 игнорирует
оператор полностью; ничто не вставляется или регистрируется. Обработка таких операторов в этом отношении
изменилась значительно в предыдущих выпусках MySQL; если Вы тиражируетесь от MySQL 5.5.6 или ведущего устройства
старшего возраста к более новому ведомому устройству, см. CREATE
... IF NOT EXISTS
Операторы