2015-09-02 4 views
0

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

Так что, полагаю, я неправильно использую эти условия. Я не мог найти этот материал в руководстве пользователя для текущей версии, так что я следующее:

insert into sym_router 
(router_id,source_node_group_id,target_node_group_id,router_type,router_expression,create_time,last_update_time) 
values('corp_2_one_store', 'corp', 'store', 'column','STORE_ID=:EXTERNAL_ID or OLD_STORE_ID=:EXTERNAL_ID',current_timestamp, current_timestamp); 

insert into sym_trigger_router 
(trigger_id,router_id,initial_load_order,initial_load_select,last_update_time,create_time) 
values('item_selling_price','corp_2_one_store',100,'store_id=''$(externalId)''',current_timestamp,current_timestamp); 

из образцов фасованных с SymmetricDS, но я изменил «магазин» на «клиент» и «АМФ» на «сервер «в моих собственных конфигурациях, и он больше не работает. И, честно говоря, я понятия не имею, что здесь происходит с STORE_ID=:EXTERNAL_ID or OLD_STORE_ID=:EXTERNAL_ID и store_id=''$(externalId)'' и почему есть два из них.

С сайта у меня есть из более ранних версий этого примера:

insert into SYM_TRIGGER 
    (source_table_name, source_node_group_id, target_node_group_id, channel_id, 
    sync_on_insert, sync_on_update, sync_on_delete, 
    node_select, 
    initial_load_order, last_updated_by, last_updated_time, create_time) 
values 
    ('sale_transaction', 'corp', 'store', 'sale_transaction', 
    1, 1, 1, 
    'and external_id = $(curTriggerValue).store', 
    105, 'demo', current_timestamp, current_timestamp); 

Но это, очевидно, не работает, так как половина этой информации теперь хранится в другом месте, но даже извлекая colums, которые там больше нет (кто знает, может быть, эти новые таблицы хранят только ту же информацию для удобства чтения?) Я не могу заставить ее работать.

Любые предложения?

Обновление Когда я запускаю только учебный пример, все работает. Так что реальный вопрос здесь: что это значит: STORE_ID=:EXTERNAL_ID or OLD_STORE_ID=:EXTERNAL_ID и store_id=''$(externalId)''? И как я могу изменить это, если мои узлы называются server вместо corp и client вместо store?

Update 2 По this, мой маршрутизатор хорошо, и у меня есть некоторые проблемы с моей sym_trigger_router конфигурации, а именно, store_id=''$(externalId)''

+0

Какая версия симметрии, которую вы используете? –

+0

@ BorisPavlović последнее, 3.7.19 – SMSk

+0

Маршрутизатор кажется прекрасным, не могли бы вы увидеть, будет ли после вставки/обновления строки в db, которая маршрутизируется этим маршрутизатором, есть новая строка в таблице 'sym_outgoing_batch'? Эта таблица может быть объединена с символами 'sym_data_event' и' sym_data', чтобы увидеть, какие данные относятся к маршрутизируемой исходящей партии. –

ответ

1

Итак, я нашел мою проблему. У меня была опечатка в имени моей таблицы, поэтому для нее не создавались триггеры.

Для тех, кто каким-то образом наткнуться на этот вопрос:

1) Что такое STORE_ID=:EXTERNAL_ID or OLD_STORE_ID=:EXTERNAL_ID?

Это ясно написано here, но в двух словах, STORE_ID это имя столбца, OLD_ означает предыдущего значение столбца и :EXTERNAL_ID является одним из SymmetricDS внутренних переменные, наряду с :NODE_ID и так далее.

Эта строка используется, чтобы определить, следует ли извлекать текущую строку или нет, и это параметр маршрутизатора. (Если вы решили использовать маршрутизатор другого типа, берегись, у него есть другие параметры, быть прилежными!)

2), что store_id=''$(externalId)''

Это описано в какой-то момент here, но опять-таки, в двух словах: Во время начальной загрузки по умолчанию симметричная собирает все данные из таблицы (select * from ...). Этот параметр является добавлением к предложению where, а t может использоваться для ссылки на таблицу, которая синхронизируется.$(externalId) является одной из переменных, которые SymmetricDS инициализирует во время запуска, есть список таких переменных где-то в Руководстве пользователя.

Смежные вопросы