所以我正尝试使用symmetricDS将Java h2数据库复制到postgres。我正在使用zip
文件简单配置。这是发生了什么。我遵循了入门指南,下载了对称文件,然后尝试演示,然后尝试使用自己的配置并在触发器中添加了一些表。但是:
varchar
中复制不包含h2
字段的表,则效果很好。varchar
字段的表,则在创建表时会崩溃。
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
中的错误尚未解决?
谢谢。
答案 0 :(得分:1)
我设法通过手动在目标数据库上创建表来解决此问题。这是我在运行bin/sym
之前所做的事情。
dbexport
使用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
。bin/sym
,它将检测到表已创建,并跳过表创建步骤。这不是理想的方法,但目前应该可以使用。