Ошибка Vertica JDBC

В моем SQL-запросе нет «est». Я могу использовать этот SQL для успешной вставки в vertica напрямую, но когда я использую JDBC, это происходит неправильно.

java.sql.SQLException: [Vertica]VJDBC ERROR: синтаксическая ошибка в или около "est" [вставить в ....]

Вызвано: java.sql.SQLException: [Vertica]VJDBC ERROR: синтаксическая ошибка в или около «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 ERROR: синтаксическая ошибка в или около "est" [вставьте в public.gamelive_original (час, минута, 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',' привет','привет‌​ло',NULL,'привет','6094',NULL,'yeschenshu','любовь','2016-01-17' ) ]


person Lina    schedule 20.01.2016    source источник
comment
Не могли бы вы опубликовать SQL, приводящий к этой ошибке?   -  person Eddy Verbruggen    schedule 20.01.2016
comment
java.sql.SQLException: [Vertica][VJDBC](4856) ОШИБКА: синтаксическая ошибка в или около est [вставить в public.gamelive_original(час, минута, 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 ','привет','привет',NULL,'привет','6094',NULL,'yeschenshu','love','2016-01-17' ) ]   -  person Lina    schedule 20.01.2016
comment
Форматирование и добавление кода из комментария в вопрос.   -  person JodyT    schedule 20.01.2016
comment
Не могли бы вы поделиться целевой таблицей DDL?   -  person mauro    schedule 20.01.2016
comment
Наверное, да, просто вы этого не видите. Что формирует заявление?   -  person Kermit    schedule 20.01.2016


Ответы (1)


Ваша трассировка стека указывает на пакетное обновление — ошибка будет в одной из обновленных строк.

Поскольку ваш журнал показывает параметры внутри SQL, вы, вероятно, не использовали PreparedStatement

Мое лучшее предположение: в вашем коде отсутствует экранирование, и вы вставляете строку вроде...

  "C'est la vie"

Что без надлежащего экранирования создаст Sql как

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

Что создаст ошибку рядом с "est"

person Jan    schedule 20.01.2016