使用mybatis删除表中的分区时出现了java.sql.SQLException: json: cannot unmarshal string into Go value of type []string的异常,这种情况要如何修改sql呢
直接用 mysql client 命令行可以执行么?
另外 jdbc 用的什么版本呢?
使用mysql client执行同样的sql是可以的,jdbc的版本是5.2.8
你这个感觉是代码问题,都没到数据库执行。。。。。
感谢大佬,我先试试
尝试直接用jdbc来执行,还是 json: cannot unmarshal string into Go value of type []string的异常
cannot unmarshal string into Go value of type []string
要搞成String[]才行么?
alter table table drop partition [‘P20230203’]
试试…
这个不太符合预期,
不过由于旧版 4.0.x 基本上已经不更新了,
如果条件允许,请辛苦升级到 6.5.0 看看该问题是否存在!
如果有 bug 大概率也是 JDBC 的兼容性问题,这个是基本功功能,我们再修复一下
通过对比不同版本tidb的抓包情况,发现在4.0.8下操作是正常的,而4.0.2的会出现这样的问题,通过查看发布历史,与partition相关的代码有变化,如果使用4.0.5之前的tidb和和4.0.5后的tikv就会导致unmarshal的现象,因此保持两者版本一致的话一般就没有问题了
抱歉,之前看错了,把spring的版本写过来了,5.2.8是spring的版本,mysql-connector-java的版本是8.0.21
我使用以下环境没有复现,请问你连接 tidb 有其他参数设置么
- tidb v4.0.2
- mysql-connector-java 8.0.21
- mybatis 3.5.6
mybatis是3.5.10,应该不是其他参数的问题,我又试了一次,4.0.2的会出现如下异常
java.sql.SQLException: json: cannot unmarshal string into Go value of type []string
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953)
at com.mysql.cj.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java:370)
4.0.8的一切正常
此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。