Java大量数据插入pgsql_java-将UUID值插入PostgreSQL数据库时出现Liquib...

我正在将Spring Boot 2与Liquibase(Core 3.6.2)一起使用,我的数据库是PostgreSQL.

?我通过db.changelog-master.xml中的这个变更集创建表:

下一个用于从csv文件向该表中插入值的变更集:

如果我在列ID中指定类型UUID而不是STRING,那么liquibase会告诉我:

loadData type of uuid is not supported. Please use BOOLEAN, NUMERIC, DATE, STRING, COMPUTED or SKIP

test.csv文件的内容:

"id","note"

"18d892e0-e88d-4b18-a5c0-c209983ea3c0","test-note"

当我运行应用程序时,liquibase创建了表,当它尝试插入值时,出现以下消息:

ERROR: column "id" is of type uuid but expression is of type character varying

问题出在liquibase-core依赖项中的ExecutablePreparedStatementBase类中,并且此类中的方法行会产生此错误:

private void applyColumnParameter(PreparedStatement stmt, int i, ColumnConfig col) throws SQLException,

DatabaseException {

if (col.getValue() != null) {

LOG.debug(LogType.LOG, "value is string = " + col.getValue());

stmt.setString(i, col.getValue());

}

Liquibase使用JDBC和PreparedStatement执行查询.问题是因为表测试的列类型是uuid,而liquibase试图插入字符串.而且,如果我们使用JDBC手动向该表中插入值,则应使用PreparedStatement的setObject方法而不是setString.但是,如果此问题位于liquibase-core.jar中,该如何解决此问题?有人能帮我吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值