前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >[MYSQL案例][015] mysql导入数据, 但存储过程注释没了...

[MYSQL案例][015] mysql导入数据, 但存储过程注释没了...

原创
作者头像
大大刺猬
发布2023-09-04 18:10:20
发布2023-09-04 18:10:20
50000
代码可运行
举报
文章被收录于专栏:大大刺猬大大刺猬
运行总次数:0
代码可运行

环境

mysql导出某个库下所有对象, 包括存储过程. 到目标环境

问题

使用如下命令导出指定库的信息, 然后导入到目标环境, 发现存储过程的注释没有了

导出:

代码语言:javascript
代码运行次数:0
运行
复制
mysqldump --single-transaction --master-data=2--set-gtid-purged=OFF--quick -h127.0.0.1-P3314-uroot -p123456 -R--databases db2023 > t20230904_db2023.sql

导入:

代码语言:javascript
代码运行次数:0
运行
复制
mysql -h127.0.0.1-P3314-uroot -p123456 -Ddb2023 < t20230904_db2023.sql

分析

1. 确认源环境存储过程是否有注释

show create procedure test_proc;

如果源环境没得的话, 那肯定是导不出来的...

2. 查看导出文件是否有注释

都有的话, 那就是导入的问题了

mysql连接的时候有个参数是发送注释给server

代码语言:javascript
代码运行次数:0
运行
复制
  -c, --comments      Preserve comments. Send comments to the server. The
                      default is --skip-comments (discard comments), enable
                      with --comments.

但默认是不发送注释的(节约带宽). 也就是导入的时候注释就被忽略掉了....

解决办法

导入的时候, 连接数据库时加上 -c 即可

代码语言:javascript
代码运行次数:0
运行
复制
mysql -c -h127.0.0.1 -P3314 -uroot -p123456 -Ddb2023 < t20230904_db2023.sql

但现在又重新导入数据太麻烦了. 所以可以只导出存储过程

-t 不要表结构

-d 不要数据

-R 要存储过程

代码语言:javascript
代码运行次数:0
运行
复制
mysqldump -d -t --single-transaction --master-data=2 --set-gtid-purged=OFF --quick -h127.0.0.1 -P3314 -uroot -p123456 -R --databases db2023 > t20230904_db2023.sql

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 环境
  • 问题
  • 分析
  • 解决办法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档