varchar 类型的 SymmetricDS 长度不能超过 N
SymmetricDS length for type varchar cannot exceed N
所以我正在尝试使用 symmetricDS 将 java h2 数据库复制到 postgres。我正在使用 zip
文件简单配置。这是发生了什么。我遵循了入门指南,下载了 symmetricds,并尝试了演示,然后我尝试使用自己的配置和触发器中的一些 table。但是:
- 如果我在
h2
中复制没有 varchar
字段的 table 它工作得很好。
- 如果我有一个包含
varchar
字段的 table,它会在创建 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 创建步骤。
这不是理想的方式,但目前应该可行。
所以我正在尝试使用 symmetricDS 将 java h2 数据库复制到 postgres。我正在使用 zip
文件简单配置。这是发生了什么。我遵循了入门指南,下载了 symmetricds,并尝试了演示,然后我尝试使用自己的配置和触发器中的一些 table。但是:
- 如果我在
h2
中复制没有varchar
字段的 table 它工作得很好。 - 如果我有一个包含
varchar
字段的 table,它会在创建 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
使用 - 修改生成的查询文件中的缺陷
samples/create_asset_and_trade.sql
。在我的例子中,它是varchar
. 的长度
- 修复后,运行 生成的查询使用
dbimport
填充目标数据库。bin/dbimport --engine store-001 samples/create_asset_and_trade.sql
. - 运行ning
bin/sym
现在应该可以了,它会检测到 table 已经创建,并跳过 table 创建步骤。
dbexport
创建
这不是理想的方式,但目前应该可行。