Spec-Zone .ru
спецификации, руководства, описания, API

16.4.1.5. Репликация CREATETABLE ... SELECT Операторы

Этот раздел обсуждает, как 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:

Когда целевая таблица существует и IF NOT EXISTS дается, MySQL 5.7 игнорирует оператор полностью; ничто не вставляется или регистрируется. Обработка таких операторов в этом отношении изменилась значительно в предыдущих выпусках MySQL; если Вы тиражируетесь от MySQL 5.5.6 или ведущего устройства старшего возраста к более новому ведомому устройству, см. Репликацию CREATE ... IF NOT EXISTS Операторы, для получения дополнительной информации.