【问题标题】:Vertica JDBC wrongVertica JDBC 错误
【发布时间】:2016-01-20 09:42:38
【问题描述】:

我的 SQL 查询中没有任何“est”。直接用这个SQL可以成功插入vertica,但是用JDBC就出错了。

java.sql.SQLException:[Vertica]VJDBC 错误:语法错误 或靠近“est”[插入....]

原因:java.sql.SQLException: [Vertica]VJDBC ERROR: Syntax “est”处或附近的错误 在 com.vertica.util.ServerErrorData.buildException(未知来源) 在 com.vertica.dataengine.VDataEngine.prepareImpl(未知来源) 在 com.vertica.dataengine.VDataEngine.prepareBatch(未知来源) 在 com.vertica.dataengine.VDataEngine.prepareBatch(未知来源) 在 com.vertica.jdbc.SStatement.executeBatch(未知来源) 在 com.lina.common.util.JdbcConn.executeBatchUpdate(JdbcConn.java:77)

整个查询的错误:

java.sql.SQLException:[Vertica]VJDBC 错误:语法错误 或“est”附近 [插入 public.gamelive_original(hour, minute, ip, 国家、sp、行为、时间、uid、pcode、r_name、r_owner、r_owne_id、 r_category, online_num, ver,sender,msg,dt) 值 ( '21','40','125.90.93.219','hello',NULL,'webzb',NULL,'10240','hello','hello','hel‌​lo',NULL,'hello', '6094',NULL,'yeschenshu','爱','2016-01-17' ) ]

【问题讨论】:

  • 能否请您发布导致此错误的 SQL?
  • java.sql.SQLException: [Vertica][VJDBC](4856) 错误:“est”处或附近的语法错误 [插入 public.gamelive_original(hour, minute, ip, country, sp, act, time, uid, pcode, r_name, r_owner, r_owne_id, r_category, online_num, ver,sender,msg,dt) 值('21','40','125.90.93.219','hello',NULL,'webzb ',NULL,'10240','hello','hello','hello',NULL,'hello','6094',NULL,'yeschenshu','love','2016-01-17') ]
  • 格式化并将代码从评论添加到问题。
  • 能否分享一下目标表DDL?
  • 可能有,只是你没看到。生成语句的原因是什么?

标签: java jdbc vertica


【解决方案1】:

您的堆栈跟踪表明 批量 更新 - 错误将出现在更新的行之一中。

由于您的日志显示 SQL 中的参数,您可能没有使用 PreparedStatement

我最好的猜测:您的代码中缺少转义并插入一个类似...的字符串

  "C'est la vie"

如果没有适当的转义将创建一个类似的 Sql

  insert into foo(bar) values('C'est la vie')

这会在“est”附近产生错误

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-23
    • 2014-03-11
    相关资源
    最近更新 更多