Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java varchar类型的SymmetricDS长度不能超过N_Java_Database_H2_Symmetricds - Fatal编程技术网

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

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

所以我尝试使用它将JavaH2数据库复制到postgres。我正在使用
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
之前所做的操作

  • 使用
    dbexport
    by
    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
    的长度
  • 修复后,使用
    dbimport
    运行生成的查询以填充目标数据库<代码>bin/dbimport--engine store-001示例/创建资产和交易.sql
  • 现在运行
    bin/sym
    应该可以了,它将检测到表已经创建,并跳过表创建步骤

这不是一种理想的方法,但现在应该可以使用。

有一种clob列类型可用于流媒体,避免从这些2GB列中提取数据。你确定你需要尽可能多的空间来放置名称和描述吗?问题是,在解决这个问题时,我不能接触h2模式,所以我需要这样做,postgres上创建的表只能是varchar(255),有没有办法做到这一点?如果可能,在h2中添加一个镜像表,并在“资产”上使用insert/update/delete触发器表,将对镜像表的更改复制到最多255个字符的varchar,并配置从镜像表到目标dbhi@BorisPavlović的同步,感谢您花时间,最后,我使用
dbexport
工具手动创建了目标数据库的表,以生成查询,并使用
dbimport
生成表。在执行
dbimport
之前,我仍然需要调整
dbexport
的查询结果,即
varchar(2147483647)
。谢谢你的帮助。