文件一大了非常麻烦,最近遇到这样的问题。
[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/;;/$$/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 "%s $$\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 ";;\n"
3250 " ",
3251 (*show_trigger_row)[6]);
修改为:
3247 fprintf(sql_file,
3248 "DELIMITER $$\n"
3249 "$\n"
3250 " ",
3251 (*show_trigger_row)[6]);
static int dump_trigger(FILE *sql_file, MYSQL_RES *show_create_trigger_rs,
const char *db_name,
const char *db_cl_name)
3334 fprintf(sql_file,
3335 "DELIMITER ;;\n"
3336 ";;\n"
3337 "DELIMITER ;\n",
3338 (const char *) (query_str != NULL ? query_str : row[2]));
修改为:
3334 fprintf(sql_file,
3335 "DELIMITER $$\n"
3336 "$$\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]#
不会报错了。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容猜你喜欢
AI推送时光机 咦!没有更多了?去看看其它编程学习网 内容吧