TiSpark执行insert into select报错

执行SQL:insert into db2.tb2 select * from db1.tb1
报错:
org.tikv.common.exception.TiBatchWriteException: currently user provided auto increment value is only supported in update mode!
please set parameter replace to true!

看起来像是叫我设置什么参数,但我找了文档,找不到

这里报错的意思是 db2.tb2 表里已经有相同主键的数据了,你执行 insert 会报错。

你评估业务上是否需要用 db1.tb1 覆盖掉 db2.tb2 表里的,如果是,设置spark 开启insert自动转replace的功能“please set parameter replace to true”。

其实,你可以使用 replace into select 语句试试看

自动增长键值冲突导致

或者指定字段,把自增字段排除

额,TiSpark不支持replace into

嗯,那就老老实实调整spark跑任务的配置吧,设置spark 开启insert自动转replace的功能。
或者调整表结构处理掉自增字段。

看了一下源码,好像是spark.tispark.replace这个参数,只有试一试了

把sql改成如下试试:insert into db2.tb2 select * from db1.tb1 replace true

不用,确实是spark.tispark.replace这个参数,加上spark.tispark.replace true就可以了

嗯嗯,解决问题就行,最好把你的解决方案置顶,以后大家有类似问题可以快速找到解决方案

可以用replace

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。