percona MYSQL 5.7.13 5.7.14 MYSQLDUMP 导入报错delimiter (修改MYSQLDUMP代码)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: percona 5.7.13 5.7.14 MYSQLDUMP备份完成后不能呢导回去, 文件一大了非常麻烦,最近遇到这样的问题。 [root@testmy client]#  /mysqldata/mysql3308/bin/mysql -uroot -p
percona 5.7.13 5.7.14 MYSQLDUMP备份完成后不能呢导回去,
文件一大了非常麻烦,最近遇到这样的问题。
[root@testmy client]#  /mysqldata/mysql3308/bin/mysql -uroot -p<log.sql
Enter password: 
ERROR at line 63: DELIMITER must be followed by a 'delimiter' character or string
ERROR 1064 (42000) at line 64: 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 '' at line 4


其实这里就是DELIMITER 后面的;;解析了,只要把;;转变为就好了.
  [root@testmy client]# sed -i "s/;;/
就好了.
  [root@testmy client]# sed -i "s/;;/
/g" log.sql
[root@testmy client]#  /mysqldata/mysql3308/bin/mysql -uroot -p<log.log
Enter password: 
[root@testmy client]# 


当然我这里是测试库,如果真的是线上库量非常大作sed谈何容易。所以决定从mysqldump下手改一下标识即可。
下面是修改部分,因为MYSQLDUMP是独立的工具,这些函数全是static函数,可以放心修改,如果是外部函数真
还不敢改,修改源码的client/mysqldump.c 如下部分修改了:


static uint dump_events_for_db(char *db)
2547            fprintf(sql_file,
2548            "DELIMITER ;;\n" 
2549            "%s ;;\n"
2550            "DELIMITER ;\n",


修改为


static uint dump_events_for_db(char *db)
2547            fprintf(sql_file,
2548            "DELIMITER \n"2549"
\n"
2550            "DELIMITER ;\n",

static void dump_trigger_old(FILE *sql_file, MYSQL_RES *show_triggers_rs,
                             MYSQL_ROW *show_trigger_row,
                             const char *table_name)
3247        fprintf(sql_file,
3248          "DELIMITER ;;\n"
3249          "/*!50003 SET SESSION SQL_MODE=\"%s\" */;;\n"
3250          "/*!50003 CREATE */ ",
3251          (*show_trigger_row)[6]);
修改为:
3247        fprintf(sql_file,
3248          "DELIMITER \n"3249"/!50003SETSESSIONSQLMODE=\"3250"/!50003CREATE/",3251(showtriggerrow)[6]);staticintdumptrigger(FILEsqlfile,MYSQLRESshowcreatetriggerrs,constchardbname,constchardbclname)3334fprintf(sqlfile,3335"DELIMITER;;\n"3336"/!500033337"DELIMITER;\n",3338(constchar)(querystr!=NULL?querystr:row[2]));3334fprintf(sqlfile,3335"DELIMITER
\n"
3336            "/*!50003 %s */\n"
  3337            "DELIMITER ;\n",
  3338            (const char *) (query_str != NULL ? query_str : row[2]));
 
 
 
 
  最后需要重新cmake一下make编译一下不需要make install 把mysqldump 拷贝到相应的目录即可
  修改后
  [root@testmy client]# more log.log |grep '
'
DELIMITER end/

DELIMITER end



[root@testmy client]#  /mysqldata/mysql3308/bin/mysql -uroot -p<log.log
Enter password: 
[root@testmy client]# 


不会报错了。

</log.log
</log.log
</log.sql
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
91
分享
相关文章
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
213 6
2024Mysql And Redis基础与进阶操作系列(4-2)作者——LJS[含MySQL非空、唯一性、PRIMARY KEY、自增列/自增约束举例说明等详解步骤及常见报错问题对应的解决方法]
24MySQL非空、唯一性、PRIMARY KEY、自增列/自增约束举例说明等详解步骤及常见报错问题对应的解决方法(4-2) 学不会你来砍我!!!
Linux下mysql数据库的导入与导出以及查看端口
本文详细介绍了在Linux下如何导入和导出MySQL数据库,以及查看MySQL运行端口的方法。通过这些操作,用户可以轻松进行数据库的备份与恢复,以及确认MySQL服务的运行状态和端口。掌握这些技能,对于日常数据库管理和维护非常重要。
155 8
升级到MySQL 8.4,MySQL启动报错:io_setup() failed with EAGAIN
当MySQL 8.4启动时报错“io_setup() failed with EAGAIN”时,通常是由于系统AIO资源不足所致。通过增加AIO上下文数量、调整MySQL配置、优化系统资源或升级内核版本,可以有效解决这一问题。上述解决方案详细且实用,能够帮助管理员快速定位并处理此类问题,确保数据库系统的正常运行。
156 9
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
2024Mysql And Redis基础与进阶操作系列(6)作者——LJS[含MySQL 多表之一对一/多;多对多;多表联合查询等详解步骤及常见报错问题所对应的解决方法]
MySQL 多表之一对一/多;多对多;多表联合之交叉连接;内连接;左、右、外、满、连接;子查询及关键字;自连接查询等详解步骤及常见报错问题所对应的解决方法
2024Mysql And Redis基础与进阶操作系列(5)作者——LJS[含MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页等详解步骤及常见报错问题所对应的解决方法]
MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页、INSERT INTO SELECT / FROM查询结合精例等详解步骤及常见报错问题所对应的解决方法
2024Mysql And Redis基础与进阶操作系列(1)作者——LJS[含MySQL的下载、安装、配置详解步骤及报错对应解决方法]
Mysql And Redis基础与进阶操作系列(1)之[MySQL的下载、安装、配置详解步骤及报错对应解决方法]