处理MySQL数据库导入报错一则

1. 背景
企业组织架构要调整,应用层响应业务需求,自然要波及IT系统核心,数据库。根据要求:
导出业务数据库,为了验证备份,将备份传到异机进行恢复测试。


2. 数据库版本:
Server version: 5.7.33-log MySQL Community Server (GPL)

3. 操作步骤及报错信息:
3.1. 使用SCP将生产环境的备份传到测试服务器
3.2. 使用mysqldump 导入备份
mysql  -D cap < cap_bak20210810.sql

注:已经在/etc/my.cnf配置相关登录信息。

导入数据过程中报错如下,并中止:
ERROR 1064 (42000) at line 9555: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''1' at line 1

4. 排查过程
4.1 怀疑是数据有问题,检查导出文件行9555,没发现问题
4.2 尝试其它备份文件,可以导入,怀疑备份文件有问题,对比生产环境上的备份文件和传输到测试环境的备份文件,直观发现文件大小不一样。
生产环境备份:
[root@financedb-node1 0810]# ls -l cap_bak20210810.sql
-rw-r--r--. 1 root root 2328050956 Aug 10 12:13 cap_bak20210810.sql

传输到测试环境备份:
[root@financedbapp2 cap]# ls -l cap_bak20210810.sql.old
-rw-r--r-- 1 root root 2257895424 Aug 10 12:33 cap_bak20210810.sql.old

!!!大小不一!!!

4.3 重新传输备份文件,确认备份文件大小一致之后,尝试再次导入备份,成功。


总结:
MySQ报错代码 1064 (42000),为语法错误,像这种问题,如果一味深入排查语法,数据问题,会比较耗时,想像一下导出文件中上万,几十万记录,甚至更多,备份文本就上G,操作起来很难。换一种思路,问题解决快很多。

posted @ 2021-08-10 16:33  oldoldman(OOM)  阅读(322)  评论(0)    收藏  举报