playground v7.2.0 启动集群,使用SQLyog或者Navicat工具,都不能实现数据的备份与恢复

【 TiDB 使用环境 】开发环境(tidb是运行在 Ubuntu 22.04.2 LTS x86_64(Py3.7.8) 环境中)
【 TiDB 版本 】v7.2.0
【 SQLyog 版本 】v12.14
【 复现流程 】
一、先把现有的数据表导出
1

二、导出的sql文件代码如下:

CREATE DATABASE `my_db_test`;
USE `my_db_test`;

DROP TABLE IF EXISTS `system`;
CREATE TABLE `system` (
  `id` bigint(20) NOT NULL /*T![auto_rand] AUTO_RANDOM(5) */ COMMENT 'id',
  `name` varchar(100) NOT NULL COMMENT '系统名称',
  `code` varchar(50) NOT NULL COMMENT '系统标识',
  `url` varchar(240) DEFAULT NULL COMMENT 'pc网址',
  `wap_url` varchar(240) DEFAULT NULL COMMENT 'm网址',
  `description` varchar(200) DEFAULT NULL COMMENT '系统说明',
  `status` smallint(6) NOT NULL COMMENT '系统状态 1正常,2关闭',
  `err_info` varchar(200) DEFAULT NULL COMMENT '状态说明,系统状态为2时在这里说明',
  `create_at` bigint(20) DEFAULT '0' COMMENT '创建时间',
  `update_at` bigint(20) DEFAULT '0' COMMENT '更新时间',
  PRIMARY KEY (`id`) /*T![clustered_index] CLUSTERED */,
  UNIQUE KEY `uniq_system_name_idx` (`name`),
  UNIQUE KEY `uniq_system_code_idx` (`code`),
  KEY `key_system_create_at_idx` (`create_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin /*T![auto_rand_base] AUTO_RANDOM_BASE=30001 */ COMMENT='系统表';

insert  into `system`(`id`,`name`,`code`,`url`,`wap_url`,`description`,`status`,`err_info`,`create_at`,`update_at`) values 
(864691128455135233,'系统1','aa1','http://aa.aa1.com',NULL,'',1,'',1678559006,1682836025),
(1152921504606846978,'系统2','aa2','http://aa.aa2.com',NULL,'',1,NULL,1684570450,1684570450),
(4611686018427387911,'系统3','aa3','http://aa.aa3.com',NULL,'',1,NULL,0,0),
(5188146770730811396,'系统4','aa4','http://aa.aa4.com',NULL,'',1,'',1678558726,1682835989),
(5764607523034234886,'系统5','aa5','http://aa.aa5.com',NULL,'',1,'',1678559039,1682836014),
(8358680908399640579,'系统6','aa6','http://aa.aa6.com',NULL,'',1,'正常',1683995048,1684424721),
(8358680908399640581,'系统7','aa7','http://aa.aa7.com',NULL,'',1,NULL,1684570340,1684570340);

三、运行上面的代码恢复数据,报错如下

错误代码: 8216
Invalid auto random: Explicit insertion on auto_random column is disabled. Try to set @@allow_auto_random_explicit_insert = true.

四、如果使用Navicat导出再导入,就会出现这个帖子的问题
https://asktug.com/t/topic/1009883/17

常用的工具都不能对tidb进行备份与恢复吗?

引起的问题是id列设置了AUTO_RANDOM参数,就不能识别外部输入的id值了,mysql和mongodb类的数据库,也有自增类的参数,也没遇到这问题,,官方是不是解决一下,这个问题还是挺影响使用体验的

这篇 @啦啦啦啦啦 写的文档你可以看一下:

1 个赞

第三方工具问题,其实和tidb没啥关系

你可以可工具方提下建议~

建议使用 BR 进行备份和恢复

设置全局的 allow_auto_random_explicit_insert = true 就行了。tidb都给了参数了,设置一下就行了,还要咋解决 :rofl:

1 个赞

数据量不是特别大的话备份恢复用dumpling+lightning不香吗 :kissing_heart:

1 个赞

这个无法修复

SET GLOBAL allow_auto_random_explicit_insert=TRUE;
就行了

就用你的方法,

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