mysql备份单个表恢复失败-阿里云开发者社区

开发者社区> 数据库> 正文

mysql备份单个表恢复失败

简介: 问题 备份数据库 mysqldump -uroot -p database_name tab1 > test.sql; # 远程加 -h 恢复数据库 使用的是source,进入数据库以后 use database_name; source test.

问题

备份数据库

  • mysqldump -uroot  -p database_name tab1 > test.sql;   # 远程加 -h

恢复数据库

  • 使用的是source,进入数据库以后

    use database_name;
    source test.sql;
  • 但是失败了,报错,并且tab1表也被删除了

    ERROR 1146 (42S02): Table 'database_name.tab1' doesn't exist
    ERROR 1146 (42S02): Table 'database_name.tab1' doesn't exist
  • :原来是有这个表的,但是在执行source以后表就被删除了

解决

  • 找了好久都没找到原因,看了一下导出的sql文件,发现是先删除表再创建,然后插入数据,猜测是因为创建的时候失败了,导致没有了表。
  • sql文件开头有这样一段:

    -- ----------------------------
    -- Table structure for tab1
    -- ----------------------------
    DROP TABLE IF EXISTS `tab1`;
    CREATE TABLE `tab1` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
      `phone` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
      `address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
      `create_at` datetime(6) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=15982 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
    
    -- ----------------------------
    -- Records of tab1
    -- ----------------------------
  • 既然创建失败了,那就不去删除了,直接用自己原来的数据表(但是用保证表的结构是一致的)。
  • 修改sql文件,把上面的两句删掉。
  • 再执行source,成功!

参考链接:时光不写博客-mysql备份单个表恢复失败

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章