场景:
使用TiDB 3.0.2 pump/drainer 同步数据到 MariaDB 10.3
上游:TiDB 3.0.2
下游:MariaDB 10.3
开发Spring boot activity 工作流, 工作流自动创建的数据库表中带有添加外键的Sql语句
我做了什么:
创建数据库表的SQL语句中,包含添加外键约束的语句,这个操作会在TiDB与MariaDB中都创建了相同格式的表,但不同的是,TiDB因为特性它并不会创建外键约束,而MariaDB中确根据语句成功添加了外键约束
问题:
因为这一点,当我没有按照MariaDB的规范在TiDB中删除表时,引发了drainer 中断代码如下
[2019/08/20 13:42:44.882 +08:00] [INFO] [syncer.go:246] ["handleSuccess quit"]
[2019/08/20 13:42:44.882 +08:00] [ERROR] [server.go:270] ["syncer exited abnormal"]
[error="Error 1451: Cannot delete or update a parent row: a foreign key constraint fails (`dev2_pfizer_activiti_wangxq`.`act_ge_bytearray`, CONSTRAINT `ACT_FK_BYTEARR_DEPL` FOREIGN KEY (`DEPLOYMENT_ID_`) REFERENCES `act_re_deployment` (`ID_`))"]
[errorVerbose="Error 1451: Cannot delete or update a parent row: a foreign key constraint fails (`dev2_pfizer_activiti_wangxq`.`act_ge_bytearray`, CONSTRAINT `ACT_FK_BYTEARR_DEPL` FOREIGN KEY (`DEPLOYMENT_ID_`) REFERENCES `act_re_deployment` (`ID_`))
github.com/pingcap/errors.AddStack
/home/jenkins/workspace/release_tidb_3.0/go/pkg/mod/github.com/pingcap/errors@v0.11.4/errors.go:174
github.com/pingcap/errors.Trace
/home/jenkins/workspace/release_tidb_3.0/go/pkg/mod/github.com/pingcap/errors@v0.11.4/juju_adaptor.go:15
github.com/pingcap/tidb-binlog/pkg/loader.(*tx).autoRollbackExec
/home/jenkins/workspace/release_tidb_3.0/go/src/github.com/pingcap/tidb-binlog/pkg/loader/executor.go:87
github.com/pingcap/tidb-binlog/pkg/loader.(*executor).singleExec
/home/jenkins/workspace/release_tidb_3.0/go/src/github.com/pingcap/tidb-binlog/pkg/loader/executor.go:274
github.com/pingcap/tidb-binlog/pkg/loader.(*executor).singleExecRetry.func1
/home/jenkins/workspace/release_tidb_3.0/go/src/github.com/pingcap/tidb-binlog/pkg/loader/executor.go:243
github.com/pingcap/tidb-binlog/pkg/util.RetryContext
/home/jenkins/workspace/release_tidb_3.0/go/src/github.com/pingcap/tidb-binlog/pkg/util/util.go:168
github.com/pingcap/tidb-binlog/pkg/loader.(*executor).singleExecRetry
/home/jenkins/workspace/release_tidb_3.0/go/src/github.com/pingcap/tidb-binlog/pkg/loader/executor.go:242
github.com/pingcap/tidb-binlog/pkg/loader.(*loaderImpl).execByHash.func1
/home/jenkins/workspace/release_tidb_3.0/go/src/github.com/pingcap/tidb-binlog/pkg/loader/load.go:351
golang.org/x/sync/errgroup.(*Group).Go.func1
/home/jenkins/workspace/release_tidb_3.0/go/pkg/mod/golang.org/x/sync@v0.0.0-20181221193216-37e7f081c4d4/errgroup/errgroup.go:57
runtime.goexit
/usr/local/go/src/runtime/asm_amd64.s:1337"]
[2019/08/20 13:42:44.882 +08:00] [INFO] [util.go:66] [Exit] [name=syncer]
[2019/08/20 13:42:44.882 +08:00] [INFO] [server.go:406] ["begin to close drainer server"]
[2019/08/20 13:42:44.885 +08:00] [INFO] [server.go:371] ["has already update status"] [id=dev10:8249]
[2019/08/20 13:42:44.886 +08:00] [INFO] [server.go:410] ["commit status done"]
[2019/08/20 13:42:44.886 +08:00] [INFO] [util.go:66] [Exit] [name=heartbeat]
[2019/08/20 13:42:44.886 +08:00] [INFO] [collector.go:130] ["publishBinlogs quit"]
[2019/08/20 13:42:44.886 +08:00] [INFO] [pump.go:72] ["pump is closing"] [id=dev10:8250]
[2019/08/20 13:42:44.886 +08:00] [INFO] [util.go:66] [Exit] [name=collect]
[2019/08/20 13:42:44.886 +08:00] [INFO] [main.go:73] ["drainer exit"]
[2019/08/20 13:42:44.886 +08:00] [INFO] [server.go:425] ["drainer exit"]