com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: syntax error, unexpected '?'

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: syntax error, unexpected ‘?’
org.springframework.jdbc.BadSqlGrammarException: StatementCallback; bad SQL grammar [delete from act_ru_identitylink where ID_ = ? ]; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: syntax error, unexpected ‘?’

image

v3.1.1

你好

请简单描述下做了什么操作导致该报错。

我们用程序做数据同步的时候,同步到MySQL没问题,把程序切换到tidb就报这个问题了。

通过jdbc 连接,预编译的sql 带占位符‘’?‘’ 的delete语句 = 或者in 都有问题,例子见上图。

从报错信息来看 ? 并没有被正确解析成 values,

可否上传下报错时间点对应的 tidb.log

问题已经解决

update 和insert语句使用占位符是可以的

你好,

从 tidb.log 中可以看到,传入 tidb 中的 sql 语句 ? 是没有被正确解析的,请检查下 java 程序,delete 模块对比下 update 和 insert 看是否有出入。

但是迁移回MySQL就没这个问题了

你好,

可以 debug 一下,对比连接数据源 mysql 和 tidb ,? 在哪个位置没有被传入,希望明确指出并复述下代码逻辑,并上传下截图差异,我们可以向研发同学反馈下,看是否为兼容性的问题。

好的,请稍等。

:ok_hand:

开发人员 放弃使用占位符,现在同步了

:ok_hand: