Помилку ERROR 1786 (HY000): Statement violates GTID consistency: CREATE TABLE … SELECT. я зловив коли на проекті було вирішино прибрати зайві данні у архівну базу та таблицю.
Розробник попросив виконати команду:
1 |
create table HistoricActivity as select * from Activity where createdAt <= '2021-03-01'; |
Але продакшин мастер сервер видав ERROR 1786 – як з’ясувалося помилака пов’язана з тим, що при репліказції GTID така операція не підтримується, тому що вважаютьься небезпечною. Дві команди, при виконанні транзакції можуть отримати один і той самий ідентифікатор, що може прзвести до збою.
Проблема вирішується тим, що потрібно виконати ці дві команди окремо, робиться це так:
1 |
create table HistoricActivity like Activity; |
Та після створення таблиці, запускаємо вставку даних у нову таблицю, на основі виборки зі старої.
1 |
insert HistoricActivity select * from Activity where createdAt <= '2021-03-01'; |