percona 5.7.13 5.7.14 MYSQLDUMP备份完成后不能呢导回去,
文件一大了非常麻烦,最近遇到这样的问题。
(root@testmy端)#,/mysqldata mysql3308/bin/mysql -uroot术;日志。sql
输入密码:
错误63:行分隔符必须遵循由分隔符的字符或字符串
在第64行错误1064(42000):你有一个错误在您的SQL语法;检查手册对应于你的MySQL服务器版本的语法使用“在4号线附近
其实这里就是分隔符后面的;;解析了,只要把;;转变为$ $就好了。
root@testmy客户机# sed -我”s/;;/$ $/g”日志。sql
(root@testmy端)#,/mysqldata mysql3308/bin/mysql -uroot术;日志。日志
输入密码:
(root@testmy端)#,
当然我这里是测试库,如果真的是线上库量非常大作sed谈何容易。所以决定从,mysqldump下手改一下标识即可。
下面是修改部分,因为,MYSQLDUMP是独立的工具,这些函数全是静态函数,可以放心修改,如果是外部函数真
还不敢改,修改源码的客户/mysqldump.c 如下部分修改了:
静态使用uint dump_events_for_db (char * db)
2547年,,,,,,流(sql_file
2548年,,,,,,“分隔符;;\ n”,
2549年,,,,,,“% s;; \ n”
2550年,,,,,,“分隔符;\ n”,
修改为
静态使用uint dump_events_for_db (char * db)
2547年,,,,,,流(sql_file
2548年,,,,,,“分隔符$ $ \ n”,
2549年,,,,,,“% s $ $ \ n”
2550年,,,,,,“分隔符;\ n”,
静态孔隙dump_trigger_old(文件* sql_file、MYSQL_RES * show_triggers_rs
,,,,,,,,,,,,,,,MYSQL_ROW * show_trigger_row,
,,,,,,,,,,,,,,,const char * table_name)
3247年,,,,流(sql_file
3248年,,,,,“分隔符;;\ n”
3249年,,,,,“/* !50003年设置会话SQL_MODE=\ " % s \ " */;; \ n”
3250年,,,,,“/* !50003年创建*/?
3251年,,,,,(* show_trigger_row) [6]);
修改为:
3247年,,,,流(sql_file
3248年,,,,,“分隔符$ $ \ n”
3249年,,,,,“/* !50003年设置会话SQL_MODE=\ " % s \ " */$ \ n "
3250年,,,,,“/* !50003年创建*/?
3251年,,,,,(* show_trigger_row) [6]);
静态int dump_trigger(文件* sql_file、MYSQL_RES * show_create_trigger_rs
,,,,,,,,,,,,const char * db_name,
,,,,,,,,,,,,const char * db_cl_name)
3334年,,,,,,流(sql_file
3335年,,,,,,“分隔符;;\ n”
3336年,,,,,,“/* !50003% s */;; \ n”
3337年,,,,,,“分隔符;\ n”,
3338年,,,,,,(const char *) (query_str !=零?query_str:行[2]));
修改为:
3334年,,,,,,流(sql_file
3335年,,,,,,“分隔符$ $ \ n”
3336年,,,,,,“/* !50003% s */$ $ \ n”
3337年,,,,,,“分隔符;\ n”,
3338年,,,,,,(const char *) (query_str !=零?query_str:行[2]));
最后需要重新cmake一下使编译一下不需要使安装把,mysqldump拷贝到相应的目录即可
修改后
(root@testmy端)#更多的日志。日志| grep“$ $”
分隔符$ $
结束*/$ $
分隔符$ $
$ $
结束
(root@testmy端)#,/mysqldata mysql3308/bin/mysql -uroot术;日志。日志
输入密码:
(root@testmy端)#,
不会报错了。
& lt;/日志。日志
& lt;/日志。日志
& lt;/日志。sql
文件一大了非常麻烦,最近遇到这样的问题。
(root@testmy端)#,/mysqldata mysql3308/bin/mysql -uroot术;日志。sql
输入密码:
错误63:行分隔符必须遵循由分隔符的字符或字符串
在第64行错误1064(42000):你有一个错误在您的SQL语法;检查手册对应于你的MySQL服务器版本的语法使用“在4号线附近
其实这里就是分隔符后面的;;解析了,只要把;;转变为$ $就好了。
root@testmy客户机# sed -我”s/;;/$ $/g”日志。sql
(root@testmy端)#,/mysqldata mysql3308/bin/mysql -uroot术;日志。日志
输入密码:
(root@testmy端)#,
当然我这里是测试库,如果真的是线上库量非常大作sed谈何容易。所以决定从,mysqldump下手改一下标识即可。
下面是修改部分,因为,MYSQLDUMP是独立的工具,这些函数全是静态函数,可以放心修改,如果是外部函数真
还不敢改,修改源码的客户/mysqldump.c 如下部分修改了:
静态使用uint dump_events_for_db (char * db)
2547年,,,,,,流(sql_file
2548年,,,,,,“分隔符;;\ n”,
2549年,,,,,,“% s;; \ n”
2550年,,,,,,“分隔符;\ n”,
修改为
静态使用uint dump_events_for_db (char * db)
2547年,,,,,,流(sql_file
2548年,,,,,,“分隔符$ $ \ n”,
2549年,,,,,,“% s $ $ \ n”
2550年,,,,,,“分隔符;\ n”,
静态孔隙dump_trigger_old(文件* sql_file、MYSQL_RES * show_triggers_rs
,,,,,,,,,,,,,,,MYSQL_ROW * show_trigger_row,
,,,,,,,,,,,,,,,const char * table_name)
3247年,,,,流(sql_file
3248年,,,,,“分隔符;;\ n”
3249年,,,,,“/* !50003年设置会话SQL_MODE=\ " % s \ " */;; \ n”
3250年,,,,,“/* !50003年创建*/?
3251年,,,,,(* show_trigger_row) [6]);
修改为:
3247年,,,,流(sql_file
3248年,,,,,“分隔符$ $ \ n”
3249年,,,,,“/* !50003年设置会话SQL_MODE=\ " % s \ " */$ \ n "
3250年,,,,,“/* !50003年创建*/?
3251年,,,,,(* show_trigger_row) [6]);
静态int dump_trigger(文件* sql_file、MYSQL_RES * show_create_trigger_rs
,,,,,,,,,,,,const char * db_name,
,,,,,,,,,,,,const char * db_cl_name)
3334年,,,,,,流(sql_file
3335年,,,,,,“分隔符;;\ n”
3336年,,,,,,“/* !50003% s */;; \ n”
3337年,,,,,,“分隔符;\ n”,
3338年,,,,,,(const char *) (query_str !=零?query_str:行[2]));
修改为:
3334年,,,,,,流(sql_file
3335年,,,,,,“分隔符$ $ \ n”
3336年,,,,,,“/* !50003% s */$ $ \ n”
3337年,,,,,,“分隔符;\ n”,
3338年,,,,,,(const char *) (query_str !=零?query_str:行[2]));
最后需要重新cmake一下使编译一下不需要使安装把,mysqldump拷贝到相应的目录即可
修改后
(root@testmy端)#更多的日志。日志| grep“$ $”
分隔符$ $
结束*/$ $
分隔符$ $
$ $
结束
(root@testmy端)#,/mysqldata mysql3308/bin/mysql -uroot术;日志。日志
输入密码:
(root@testmy端)#,
不会报错了。
& lt;/日志。日志
& lt;/日志。日志
& lt;/日志。sql