Java varchar类型的SymmetricDS长度不能超过N
所以我尝试使用它将JavaH2数据库复制到postgres。我正在使用Java varchar类型的SymmetricDS长度不能超过N,java,database,h2,symmetricds,Java,Database,H2,Symmetricds,所以我尝试使用它将JavaH2数据库复制到postgres。我正在使用zip文件的简单配置。下面是发生的情况。我按照《入门指南》的要求,下载Symmetricd,然后尝试演示,然后尝试使用触发器中的一些表进行配置。但是: 如果我在h2中复制不带varchar字段的表,它就可以正常工作 如果我的表中有varchar字段,那么它在创建表时会崩溃 JdbcSqlTemplate-错误:varchar类型的长度不能超过10485760 职位:161。无法执行:创建表“资产”( “db_id”BIG
zip
文件的简单配置。下面是发生的情况。我按照《入门指南》的要求,下载Symmetricd,然后尝试演示,然后尝试使用触发器中的一些表进行配置。但是:
- 如果我在
中复制不带h2
字段的表,它就可以正常工作varchar
- 如果我的表中有
字段,那么它在创建表时会崩溃李>varchar
JdbcSqlTemplate-错误:varchar类型的长度不能超过10485760
职位:161。无法执行:创建表“资产”(
“db_id”BIGINT NOT NULL默认值nextval(“‘资产db_id_seq’”),
“id”BIGINT不为空,
“帐户id”BIGINT不为空,
“name”VARCHAR(2147483647)不为空,
“说明”VARCHAR(2147483647),
“数量”BIGINT不为空,
“小数”SMALLINT不为空,
“初始数量”BIGINT不为空,
“高度”整数不为空,
“最新”布尔值默认值“TRUE”不为空,
主键(“db_id”)
)
事实上,一个明显的错误是varchar不应超过255,但源数据库就是这样,是否有任何varchar强制TEXT
类型?或者有没有其他办法?或者这是symmetricds
中尚未解决的一个bug
谢谢。我通过手动在目标数据库上创建表来解决这个问题。下面是我在运行
bin/sym
之前所做的操作
- 使用
bydbexport
bin/dbexport--engine corp-000--compatible=postgres--no data table\u a table\u b>samples/create\u asset\u and\u trade.sql为我要创建的表生成查询
- 修改生成的查询文件
中的缺陷。在我的例子中,它是samples/create\u asset\u和\u trade.sql
的长度varchar
- 修复后,使用
运行生成的查询以填充目标数据库<代码>bin/dbimport--engine store-001示例/创建资产和交易.sqldbimport
- 现在运行
应该可以了,它将检测到表已经创建,并跳过表创建步骤bin/sym
这不是一种理想的方法,但现在应该可以使用。有一种clob列类型可用于流媒体,避免从这些2GB列中提取数据。你确定你需要尽可能多的空间来放置名称和描述吗?问题是,在解决这个问题时,我不能接触h2模式,所以我需要这样做,postgres上创建的表只能是varchar(255),有没有办法做到这一点?如果可能,在h2中添加一个镜像表,并在“资产”上使用insert/update/delete触发器表,将对镜像表的更改复制到最多255个字符的varchar,并配置从镜像表到目标dbhi@BorisPavlović的同步,感谢您花时间,最后,我使用
dbexport
工具手动创建了目标数据库的表,以生成查询,并使用dbimport
生成表。在执行dbimport
之前,我仍然需要调整dbexport
的查询结果,即varchar(2147483647)
。谢谢你的帮助。