1

我正在尝试使 SymmetricDS 教程中的示例正常工作。我正在使用下载 zip 的示例目录中的配置文件 corp-000.properties 和 store-001.properties。我已将它们放在引擎目录中并对其进行了编辑,以便 corp-000 使用 MySQL DB,而 store-001 使用 H2 DB,两者都在我的本地计算机上。

以下是 corp-000.properties 中的注册和同步 URL:

registration.url=
sync.url= http : // localhost : 31415 / sync / corp-000

以下是 store-001 中的那些:

registration.url= http: // localhost : 31415 / sync / corp-000
sync.url= http : // localhost : 31415 / sync / corp-000

当我运行 bin/sym 时,它会找到两个数据库。但随后,store-001 报告:

[store-001] - DefaultOfflineClientListener - Failed to connect to the transport: http: // localhost : 8080 / sync / corp-000
[store-001] - PushService - Could not communicate with corp:000:000 at http: // localhost : 8080 / sync / corp-000 because: Connection refused

这是一个谜,因为端口 8080 没有在两个属性文件中的任何地方指定。

注意:上面的 URL 在属性文件中没有空格。我必须这样做才能让 Stackoverflow 允许我将它们包含在我的问题中。

预先感谢您的帮助。

4

3 回答 3

1

很晚才发布答案,但 store-001 的属性文件中有一个错误:

registration.url 应该指向您的根节点(即 corp-000),而不是 localhost。

我建议将 localhost 替换为 corp-000 IP 地址或网络名称: registration.url=http://<Corp-000-IPAddress>:31415/sync/corp-000

于 2015-06-17T08:00:20.750 回答
0

尝试更换:

sync.url= http : // localhost : 31415 / sync / corp-000

sync.url=http://localhost:31415/sync/corp-000

然后:

registration.url= http: // localhost : 31415 / sync / corp-000

registration.url=http://localhost:31415/sync/corp-000

sync.url= http : // localhost : 31415 / sync / corp-000

sync.url=http://localhost:31415/sync/corp-000

即从 URL 中删除所有空格(空格)。

于 2015-04-01T18:23:01.593 回答
0

我也一直在尝试让SymmetricDS 教程正常工作。

这对我来说是全新的,我遇到了一些需要很长时间才能解决的问题,因为我对 Java 数据库和 Java 数据库驱动程序等缺乏经验,此外 SymmeticDS 对我来说也是新的。

  1. 端口问题
  2. JDBC驱动问题
  3. JDBC H2数据库管理问题
  4. 表大小写问题
  5. H2数据库*.mv.db问题
  6. 共享访问数据库问题

端口问题

描述

有类似的说明

../bin/sym --port 8080 --server

但在其他地方,默认端口是 31415,我记得 pi,3.1415926....

解决方案

我有一个在 localhost 上运行的 Apache Web 服务器,因此为了测试 SymmeticDS,我调整了端口 8080 指令以使用 31415,尽管相反,对于大多数使用防火墙等的人来说可能更有意义。因为两个引擎(corp 和 store-001)在同一台机器上运行,防火墙等对本教程来说不是问题,尽管我希望它们以后可能会给我带来麻烦。

JDBC驱动问题

描述和解决方案

我需要下载并安装一些 JDBC H2 数据库驱动程序才能正常工作。

JDBC H2数据库管理问题

描述

本教程要求您针对 H2 数据库 corp-000 或 store-001 运行一些 SQL 命令。我习惯了 MySQL WorkBench 和 MS SQL Server Management Studio,需要类似的东西来打开数据库,查看它们的内容并运行 SQL 命令。

解决方案

我使用了在普通网络浏览器中运行的东西(我相信称为控制台查看器)。我从 H2 数据库网站下载并安装了东西。

表大小写问题

一些命令因未找到表 ITEM(大写)等错误消息而崩溃。检查我的数据库显示有一个名为 item(小写)的表。由于表和字段名称在标准 SQL 中默认为大写,除非被引用,否则会出现此问题。所以在 SQL

物品

表示项目,而

'物品'

表示物品。所以(例如)教程中的这一行

insert into item (item_id, price_id, name) values (110000055, 55, 'Soft Drink');

如果表名是小写的,则不正确,例如对于名为“item”的表。

解决方案

我浏览了教程附带的文件中的表名和列名并将其转换为大写。这比我期望其他人想做的工作要多。我想为 SymmetricDS 贡献我的更改,但当我读到有关签署和发布版权协议的信息时放弃了。我选择大写作为我的名称标准,这样我自己或 SymmetricDS 在引用名称时的任何草率都不会再成为阻碍。此外,任何坚持使用引号或坚持在某些地方不使用引号的不良 SQL 实现仍然可以工作。例如,如果一个实施不佳的驱动程序不喜欢引号,那么 ITEM 而不是 'ITEM' 仍然可以工作,而 item 或 ITEM 而不是 'item' 则不会。

H2数据库*.mv.db问题

描述

H2 数据库软件的更改似乎正在进行中,一些默认设置似乎使用 *.mv.db 文件。

jdbc:h2:file:C:/Work/symmetric-server-3.7.34/tmp/h2/corp;MV_STORE=FALSE;AUTO_SERVER=TRUE

解决方案

添加的

;MV_STORE=FALSE

我浏览器中的连接字符串似乎可以解决这个问题。

共享访问数据库问题

描述

我无法对 H2 数据库运行 SQL 命令(以创建要同步的新数据),而数据库已经被 SymmetricDS 打开,它正在尝试同步它们。

解决方案

jdbc:h2:file:C:/Work/symmetric-server-3.7.34/tmp/h2/corp;MV_STORE=FALSE;AUTO_SERVER=TRUE

添加的

;AUTO_SERVER=TRUE

在控制台/浏览器连接字符串中修复了该问题。您可能会注意到我也拥有数据库的完整路径。我不确定在尝试解决上面列出的问题之一时是否需要它或只是添加它。

于 2016-06-23T14:36:08.300 回答