varchar 类型的 SymmetricDS 长度不能超过 N

SymmetricDS length for type varchar cannot exceed N

所以我正在尝试使用 symmetricDS 将 java h2 数据库复制到 postgres。我正在使用 zip 文件简单配置。这是发生了什么。我遵循了入门指南,下载了 symmetricds,并尝试了演示,然后我尝试使用自己的配置和触发器中的一些 table。但是:

JdbcSqlTemplate - ERROR: length for type varchar cannot exceed 10485760 Position: 161. Failed to execute: CREATE TABLE "asset"( "db_id" BIGINT NOT NULL DEFAULT nextval('"asset_db_id_seq"'), "id" BIGINT NOT NULL, "account_id" BIGINT NOT NULL, "name" VARCHAR(2147483647) NOT NULL, "description" VARCHAR(2147483647), "quantity" BIGINT NOT NULL, "decimals" SMALLINT NOT NULL, "initial_quantity" BIGINT NOT NULL, "height" INTEGER NOT NULL, "latest" BOOLEAN DEFAULT 'TRUE' NOT NULL, PRIMARY KEY ("db_id") )

确实是一个明确的错误,说 varchar 不应超过 255,但源数据库就是这样,是否有强制任何 varchar 为 TEXT 类型?或者还有其他解决方法吗?或者这是 symmetricds 中的一个错误尚未解决?

谢谢。

我设法通过在目标数据库上手动创建 table 来解决这个问题。这是我在 运行ning bin/sym.

之前所做的
  • 为 table 生成查询 我想通过 bin/dbexport --engine corp-000 --compatible=postgres --no-data table_a table_b > samples/create_asset_and_trade.sql
  • 使用 dbexport 创建
  • 修改生成的查询文件中的缺陷samples/create_asset_and_trade.sql。在我的例子中,它是 varchar.
  • 的长度
  • 修复后,运行 生成的查询使用 dbimport 填充目标数据库。 bin/dbimport --engine store-001 samples/create_asset_and_trade.sql.
  • 运行ning bin/sym 现在应该可以了,它会检测到 table 已经创建,并跳过 table 创建步骤。

这不是理想的方式,但目前应该可行。