MYSQL备份还原失败终极解决方法

问题是这样的:先用mysqldump -uroot -p magnetlib>magnetlib.sql备份数据库,成功。然后对magnetlib数据库中的数据记录进行修改。在还原备份的时候却失败了,不仅没有成功还原,反而把数据全删了…
用mysqldump -uroot -p magnetlib<magnetlib.sql还原数据库备份,mysql先是把原表删除,再建新表、执行Insert语句。如果在执行Insert语句的过程中遇到错误,那么最后数据库中就只剩表结构而无数据。
尝试用Source命令恢复,失败。尝试用navicat恢复,失败。但是在navicat中看到了执行的SQL语句。想起来SQL文件是由SQL语句组成的。想查看SQL文件的文本内容,记事本和notepad++都因为文件过大而大不开。最终在手机ES文件浏览器打开。
SQL文件内是多条SQL语句。添加数据的语句是INSERT INTO VALUES(…),(…)语句,且每条INSERT语句不分行。尝试复制一条INSERT语句到Idea的数据库查询控制台中,居然可以正常执行。用自己编写的代码也可以执行该INSERT语句。
对于当前只有表而没有数据的情况,可以读取SQL文件中的所有INSERT语句并执行。代码如下:

package background;import background.connection.ConnectionPool;
import background.connection.ConnectionPoolUtils;import java.io.*;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;public class ImportFromSQL {/**从SQL文件导入数据* 逐行读取,执行*/public void importFromSQL(String pathname){File file=new File(pathname);if(!file.exists()||file.isDirectory())return;try {BufferedReader reader=new BufferedReader(new FileReader(file));String line=null;int index=0;while ((line=reader.readLine())!=null){//这里只执行修改某个表的语句if(line.startsWith("INSERT INTO `magnets`")){// System.out.println(line);executeSQL(line);System.out.println(index++);}}reader.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}/**执行一条SQL语句*/public void executeSQL(String sql){if(sql==null)return;try {statement.executeLargeUpdate(sql);} catch (SQLException e) {e.printStackTrace();}finally {}}Statement statement;//只用一个statement来执行,否则sql可能报内存不足错误Connection conn;/**初始准备:加载连接和Statement*/void init(){ConnectionPool cp= ConnectionPoolUtils.getPoolInstance();conn= null;try {conn = cp.getConnection();statement = conn.createStatement();} catch (SQLException e) {e.printStackTrace();}finally {cp.returnConnection(conn);}}/**关闭数据库连接和语句*/public void close(){try {statement.close();conn.close();} catch (SQLException e) {e.printStackTrace();}}public static void main(String[] args) {ImportFromSQL importFromSQL = new ImportFromSQL();importFromSQL.init();importFromSQL.importFromSQL("D:\\mysql\\mysql-8.0.25-winx64\\bin\\magnetlib.sql");importFromSQL.close();}
}

要修改的部分是获取数据库连接和语句。注意只用一个数据库语句Statement来执行,否则可能使sql报内存不足错误。(猜测sql可能是先提交给语句再执行的,创建多个Statement执行,可能会由于并行而降低执行速度)
执行完成,全部成功,并无报错,3百万条学习记录又回来了。不明白的是:为什么mysql和navicat却还原失败了…

MYSQL备份还原失败终极解决方法相关推荐

  1. ecshop和Ucenter 通信失败终极解决方法!(附带php5.3以上,出现其他问题解决方法)

    原文地址:http://blog.jing.do/tech-955.html ecshop和Ucenter 通信失败终极解决方法!(附带php5.3以上,出现其他问题解决方法) 2014年06月24日 ...

  2. win10更新后低分辨率显卡驱动丢失,NVIDIA图形驱动程序安装失败终极解决方法

    win10 更新后分辨率直接低的要死,而且无法设置高分辨率. 后来检查驱动发现显卡驱动没了. 在官网找到对应型号的驱动下载安装. NVIDIA 驱动下载官网 发现安装都失败了. 尝试过启用 windo ...

  3. mysql DbProviderFactories.GetFactory失败,解决方法

    DbProviderFactories.GetFactory 获取mysql不成功, 添加配置文件 <system.data> <DbProviderFactories > & ...

  4. centos mysql拒绝连接失败_CentOS下mysql远程连接的失败的解决方法

    mysql远程连接失败的解决方法(CentOS版) (1)先将mysql服务停掉 # /etc/init.d/mysqld stop (2)查看mysql配置文件 # vi /etc/my.cnf 特 ...

  5. win7系统还原失败怎么解决

    一些使用win7系统的用户会遇到系统提示"更新失败还原更改"的情况,但是win7系统还原失败是是什么原因呢?,win7系统还原失败怎么办呢,这让许多用户感到很苦恼,不知道要怎么解决 ...

  6. 存储过程mysql报错1271_mysqldump备份失败以及解决方法汇总

    mysqldump备份失败以及解决方法汇总〇 mysqldump: Error: Query execution was interrupted, maximum statement executio ...

  7. 关于MySQL连接Navicat Premium 12失败的解决方法

    关于MySQL连接Navicat Premium 12失败的解决方法 参考文章: (1)关于MySQL连接Navicat Premium 12失败的解决方法 (2)https://www.cnblog ...

  8. IDEA(2018)连接MySQL数据库失败的解决方法(报错08001)

    IDEA(2018)连接MySQL数据库失败的解决方法(报错08001) 参考文章: (1)IDEA(2018)连接MySQL数据库失败的解决方法(报错08001) (2)https://www.cn ...

  9. mysql 数据库初始化失败怎么办_mysql数据库失败的解决方法

    mysql数据库失败的解决方法 发布时间:2020-11-16 10:50:01 来源:亿速云 阅读:87 作者:小新 这篇文章将为大家详细讲解有关mysql数据库失败的解决方法,小编觉得挺实用的,因 ...

  10. 使用mysql workbench导入csv文件失败的解决方法

    使用mysql workbench导入csv文件失败的解决方法 解决方法: 1.用记事本打开csv文件,另存的时候,文件名后缀为.csv,保存类型为文本文档,编码方式utf-8. 2.打开workbe ...

最新文章

  1. 【MyBatis】学习纪要七:缓存(一)
  2. 嵌入式 Hi3515视频编码(H.264)笔记
  3. 90. Subsets II 1
  4. 网易青果后端系统设计窥探(含直播方案踩坑往事)
  5. 农商银行招聘计算机人员考什么,农商银行招聘考试题都考什么?
  6. mod_python模块安装
  7. python计算在月球的体重_NumPy-快速处理数据--矩阵运算
  8. TensorFlow相关工具
  9. yii2框架随笔19
  10. 集合交集,并集,差集运算
  11. 2021世界机器人大赛— 青少年机器人设计大赛
  12. 软件项目管理第4版课后习题第十六章
  13. 基于UDP/IP协议的聊天室
  14. 电机控制系统php,步进电机调速控制系统资料(原理图+单片机源码)
  15. C++最长公共子序列问题(LCS)(递归+迭代)
  16. C++——NOIP提高组——飞扬的小鸟
  17. 将对称分量转换为abc相量
  18. kinslideshow使用时图片和a标签不能换行,否则。无法实现无缝滚动。
  19. Remix IDE的安装和使用
  20. iPhone升级iOS 16后出现提示“面容ID不可用”怎么办?

热门文章

  1. DZS与EPS Global合作,加速下一代接入基础设施在欧洲和亚洲的应用
  2. 笔记本电脑设置WiFi共享
  3. dict.txt(上一个程序的文件)
  4. acm 算法 java_【经验总结】Java在ACM算法竞赛编程中易错点
  5. Codeforces C. Even Number Addicts
  6. 资源下载https://msdn.itellyou.cn/
  7. 7-4 查询水果价格 PTA
  8. 键盘拆开重新安装步骤_笔记本键盘怎么拆——键盘分拆详细步骤
  9. 我的读书笔记 -《裸猿》
  10. 电力监控服务器维修,地铁电力监控系统(PSCADA)发生故障应该如何处理