java - 与 SymmetricDS 有条件同步

标签 java symmetricds

我一直在尝试与 SymmetricDS 进行条件同步。问题是,无论我做什么,它都会忽略应该有条件同步的表,而只会无条件同步表。

所以我想,我错误地使用了这些条件。我在当前版本的用户指南中找不到此 Material ,因此我有以下内容:

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”更改为“client”,将“corp”更改为“server”,但它不再起作用。坦率地说,我不知道 STORE_ID=:EXTERNAL_ID 或 OLD_STORE_ID=:EXTERNAL_IDstore_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);

但这显然不起作用,因为一半的信息现在存储在不同的地方,但甚至删除不再存在的列(谁知道,也许这些新表只存储相同的信息以提高可读性?)我可以无法让它工作。

有什么建议吗?

更新 当我只运行训练示例时,一切正常。所以真正的问题是:这些是什么意思: STORE_ID=:EXTERNAL_ID 或 OLD_STORE_ID=:EXTERNAL_IDstore_id=''$(externalId)''?如果我的节点被称为 server 而不是 corpclient 而不是 store,我该如何更改?

更新2 根据this ,我的路由器没问题,但我的 sym_trigger_router 配置存在一些问题,即 store_id=''$(externalId)''

最佳答案

所以,我发现了我的问题。我的表名有一个拼写错误,因此没有为其创建触发器。

对于那些偶然发现这个问题的人:

1) STORE_ID=:EXTERNAL_ID 或 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 在启动期间初始化的变量之一,用户指南中的某处有此类变量的列表。

关于java - 与 SymmetricDS 有条件同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32350871/

相关文章:

java - 如何从非 Context 类获取 SharedPreferences 并且不使用非最终静态变量?

java - TCP Java 服务器,Python 客户端字符串不相等

java - 如何在 SymmetricDS for Android 中了解服务器同步到平板电脑的所有数据?

mysql - SymmetricDS:MySQL 与 PostgreSQL 实时同步

java - 对我来说,orthoM 与 frustumM 做同样的事情(即显示透视)

java - 在方法完成之前循环如何继续?

docker - 同一主机上有多个SymmetricDS实例

ios - SymmetricDS 可以用于 iOS 吗

java - SymmetricDS:我应该使用哪种方法来同步特定表?

java - 如何使用hashmap将字符设置为等于不同的字符?