Удалить преобразование не работает для столбца - PullRequest
0 голосов
/ 06 ноября 2019

Я пробую сценарий, в котором таблицы двух баз данных в MySQL синхронизируются, а в некоторых местах столбцы преобразуются. У меня есть случайный случай, когда каждый столбец таблицы DB1 во время вставки будет синхронизирован (новая строка будет вставлена ​​в DB2), но для обновления этой строки конкретный столбец не будет влиять на таблицу DB2 (каждый второй столбец будет обновлен). Я пытаюсь достичь этого путем «удаления преобразования» ( один из типов преобразования ). Но моя трансформация удаления не работает. Другие преобразования работают нормально. Может быть, я что-то пропустил. Небольшая помощь будет высоко ценится.

DB1: records_new Таблица: сотрудник

CREATE TABLE `employee` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `title` varchar(11) DEFAULT 'Mr.',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

DB2: records_new_replica Таблица: сотрудник

CREATE TABLE `employee` (
  `id` bigint(20) NOT NULL,
  `emp_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `title` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `designation` varchar(100) DEFAULT NULL,
  `name` varchar(100) DEFAULT NULL,
  `time` bigint(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

////////////////////////////////////////////////////////таблицы симов //////////////////////////////////////////////////////////////

sym_node_group

INSERT INTO records.sym_node_group
(node_group_id, description, create_time, last_update_by, last_update_time)
VALUES('records', NULL, NULL, NULL, NULL);
INSERT INTO records.sym_node_group
(node_group_id, description, create_time, last_update_by, last_update_time)
VALUES('records-replica', NULL, NULL, NULL, NULL);

sym_node

INSERT INTO records.sym_node
(node_id, node_group_id, external_id, sync_enabled, sync_url, schema_version, symmetric_version, config_version, database_type, database_version, batch_to_send_count, batch_in_error_count, created_at_node_id, deployment_type, deployment_sub_type)
VALUES('000', 'records', '000', 1, 'http://localhost:31415/sync/records-000', '?', '3.10.4', '3.10.4', 'MySQL', '8.0', -1, -1, NULL, 'server', NULL);
INSERT INTO records.sym_node
(node_id, node_group_id, external_id, sync_enabled, sync_url, schema_version, symmetric_version, config_version, database_type, database_version, batch_to_send_count, batch_in_error_count, created_at_node_id, deployment_type, deployment_sub_type)
VALUES('2000', 'records-replica', '2000', 1, 'http://DESKTOP-KSP9CJD:31415/sync/records-replica-1000', '?', '3.10.4', '3.10.4', 'MySQL', '8.0', -1, -1, '000', 'server', NULL);

sym_router

INSERT INTO records.sym_router
(router_id, target_catalog_name, target_schema_name, target_table_name, source_node_group_id, target_node_group_id, router_type, router_expression, sync_on_update, sync_on_insert, sync_on_delete, use_source_catalog_schema, create_time, last_update_by, last_update_time, description)
VALUES('emp-2-emp-new', '', '', '', 'records', 'records-replica', 'default', '', 1, 1, 0, 1, '2019-10-30 09:40:25', NULL, '2019-10-30 09:40:25', '');

sym_trigger

INSERT INTO records.sym_trigger
(trigger_id, source_catalog_name, source_schema_name, source_table_name, channel_id, reload_channel_id, sync_on_update, sync_on_insert, sync_on_delete, sync_on_incoming_batch, name_for_update_trigger, name_for_insert_trigger, name_for_delete_trigger, sync_on_update_condition, sync_on_insert_condition, sync_on_delete_condition, custom_before_update_text, custom_before_insert_text, custom_before_delete_text, custom_on_update_text, custom_on_insert_text, custom_on_delete_text, external_select, tx_id_expression, channel_expression, excluded_column_names, included_column_names, sync_key_names, use_stream_lobs, use_capture_lobs, use_capture_old_data, use_handle_key_updates, stream_row, create_time, last_update_by, last_update_time, description)
VALUES('emp-2-emp-trig_new', 'records_new', '', 'employee', 'employee', 'reload', 1, 1, 0, 0, NULL, NULL, NULL, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 1, 1, 0, '2019-10-30 09:38:56', NULL, '2019-10-30 09:38:56', '');

sym_trigger_router

INSERT INTO records.sym_trigger_router
(trigger_id, router_id, enabled, initial_load_order, initial_load_select, initial_load_delete_stmt, ping_back_enabled, create_time, last_update_by, last_update_time, description)
VALUES('emp-2-emp-trig_new', 'emp-2-emp-new', 1, 1, '', '', 0, '2019-10-30 09:41:31', NULL, '2019-10-30 09:41:31', '');

sym_transform_table

INSERT INTO records.sym_transform_table
(transform_id, source_node_group_id, target_node_group_id, transform_point, source_catalog_name, source_schema_name, source_table_name, target_catalog_name, target_schema_name, target_table_name, update_first, update_action, delete_action, transform_order, column_policy, create_time, last_update_by, last_update_time, description)
VALUES('emp-2-emp-new', 'records', 'records-replica', 'LOAD', 'records_new', NULL, 'employee', 'records_new_replica', NULL, 'employee', 0, 'UPDATE_COL', 'NONE', 1, 'IMPLIED', '2019-10-30 11:38:22', NULL, '2019-10-30 11:38:22', '');

sym_transform_column

INSERT INTO records.sym_transform_column
(transform_id, include_on, target_column_name, source_column_name, pk, transform_type, transform_expression, transform_order, create_time, last_update_by, last_update_time, description)
VALUES('emp-2-emp-new', '*', 'emp_name', 'name', 0, 'copy', '', 1, '2019-10-30 11:38:49', NULL, '2019-10-30 11:38:49', '');
INSERT INTO records.sym_transform_column
(transform_id, include_on, target_column_name, source_column_name, pk, transform_type, transform_expression, transform_order, create_time, last_update_by, last_update_time, description)
VALUES('emp-2-emp-new', '*', 'time', NULL, 0, 'lookup', 'select UNIX_TIMESTAMP()', 1, '2019-10-31 10:01:02', NULL, '2019-10-31 10:01:02', '');
INSERT INTO records.sym_transform_column
(transform_id, include_on, target_column_name, source_column_name, pk, transform_type, transform_expression, transform_order, create_time, last_update_by, last_update_time, description)
VALUES('emp-2-emp-new', 'U', 'title', 'title', 0, 'remove', '', 1, '2019-11-06 13:20:21', '', '2019-11-06 13:20:21', '');

Заранее спасибо .:)

1 Ответ

0 голосов
/ 07 ноября 2019

Я хотел удалить этот вопрос. Но я подумал, что это может быть ... если кто-то наткнулся на симметричные и после прочтения руководства пользователя ... упустил угол, и это стало гибелью для него ... только для тех ... вот так:

В руководстве при описании полей таблицы sym_router говорится о поле Использовать каталог источника / Схема , которое

Если установленозатем исходный каталог и исходная схема отправляются целевому объекту для поиска целевой таблицы.

, а в приложении / ROUTER говорится о USE_SOURCE_CATALOG_SCHEMA that,

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

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

Исходный каталог Имя каталога сконфигурированной исходной таблицы. Это должно быть установлено только , если на маршрутизаторе установлены параметры Использовать каталог источника / Схема или Каталог цели.

Схема источника Имя схемы для сконфигурированной исходной таблицы. Это должно быть установлено только , если на маршрутизаторе установлены параметры Использовать каталог источника / Схему или Целевую схему.

Таким образом, разрешение устанавливается, когда я установил имя_источника_каталога в sym_transform_table,затем я должен установить use_source_catalog_schema в таблице sym_router, и поскольку мои таблицы, которые я намеревался синхронизировать, не находятся в каталоге по умолчанию, тогда я должен явно установить два других столбца, например target_catalog_name и target_table_name в sym_transform_table.

tl; dr, установите для use_source_catalog_schema в таблице sym_router значение 1, если source_catalog_name установлено в sym_transform_table для преобразования и прочего ... прочитайте краткое описание guide.it, но это наш единственный друг.

...