Применить ошибку 1677: столбец 59 таблицы `sales_orders` нельзя преобразовать из типа` datetime` в тип `varchar (10)` - PullRequest
0 голосов
/ 04 мая 2018

Когда я выполняю следующий запрос на Реплика чтения Amazon RDS , она выдает ошибку

Apply Error 1677: Column 59 of table sales_orders cannot be converted from type datetime to type varchar(10)

Запрос, который я выполняю на реплике чтения

ALTER TABLE `sales_orders` 
ADD COLUMN `dw_base_currency` VARCHAR(10) NULL AFTER `source`,
ADD COLUMN `dw_base_total` DECIMAL(12,4) NULL AFTER `dw_base_currency`;

Я проверил набор символов таблицы, описанной в ответе на MySQL репликация (реплика TokuDB): Столбец X таблицы «database.table» нельзя преобразовать из типа «varchar (Y)» в тип «varchar ( Y) ' но в моем случае набор символов таблицы такой же.

1 Ответ

0 голосов
/ 04 мая 2018

При репликации изменений, вызванных запросом, если мастер выбирает запись события в формате ROW, имена столбцов не записываются в журнал - только значения, упорядоченные по порядковому положению каждого столбца в определении таблицы.

Это означает, что реплика может иметь больше или меньше столбцов, чем мастер, но если это так, расхождение должно быть ограничено крайними правыми столбцами таблицы.

Ваши изменения в реплике, по-видимому, привели к появлению новых столбцов где-то посередине, и это недопустимо.

Вы можете реплицировать таблицу с главного на подчиненное, так что у главных и подчиненных копий таблицы может быть разное количество столбцов при соблюдении следующих условий:

  • Столбцы, общие для обеих версий таблицы, должны быть определены в одном и том же порядке на главном и подчиненном устройствах.

(Это верно, даже если в обеих таблицах одинаковое количество столбцов.)

  • Столбцы, общие для обеих версий таблицы, должны быть определены перед любыми дополнительными столбцами.

Это означает, что выполнение оператора ALTER TABLE на ведомом устройстве, в котором новый столбец вставляется в таблицу в пределах диапазона столбцов, общих для обеих таблиц, приводит к сбою репликации [...]

https://dev.mysql.com/doc/mysql-replication-excerpt/5.7/en/replication-features-more-columns.html

...