mysql备份单个表恢复失败

举报
时光不写 发表于 2022/02/22 19:27:20 2022/02/22
【摘要】 问题 备份数据库mysqldump -uroot -p database_name tab1 > test.sql; # 远程加 -h 恢复数据库使用的是source,进入数据库以后use database_name;source test.sql;但是失败了,报错,并且tab1表也被删除了ERROR 1146 (42S02): Table 'database_name.tab1' ...

问题

备份数据库

  • 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备份单个表恢复失败

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。