mysqldump仅查看定义、触发器、例程和事件

5rgfhyps  于 2022-10-31  发布在  Mysql
关注(0)|答案(3)|浏览(153)

我希望能够将这些数据库对象导出到一个文件中。它应该以这样一种方式运行该文件(稍后),以便能够在原始数据库或不同的数据库中重新创建相同的视图、触发器、函数、存储过程和事件。
换句话说,我不需要表定义及其关联的索引和约束。
我原本以为mysqldump上会有简单明了的选项,但事实似乎并非如此。
这对我来说几乎是这样:

mysqldump -u root -p source_database --no-data --no-create-db --no-create-info 
--routines --triggers --skip-opt --set-gtid-purged=OFF > db_objects.sql

但是明显缺少的是eventsviews。另外,我需要根据情况删除或替换每个对象,因为它可能已经存在。
我会很感激任何在正确方向上的推动。也许我需要一个脚本来实现这一点?

EDIT:我为什么需要这个?

我希望能够运行一个脚本,一次重新创建所有这些对象。这可能是生产服务器维护的一部分,使用来自开发服务器的更新副本。
现在,prod服务器上的某些表可能也需要更新(ALTERED),但这些表更敏感,需要更多的考虑。据我所知,您可能一天24次删除和重新创建视图、事件、触发器和例程(现在我夸张了!),而很少考虑数据冲突。

m0rkklqb

m0rkklqb1#

试试这个我已经试过了它不显示我任何表在.sql文件

mysqldump -u root -p blog2 --no-data --no-create-db --no-create-info --routines --triggers --skip-opt --lock-tables --set-gtid-purged=OFF > blogs2.sql
wb1gzix0

wb1gzix02#

您需要添加“--events”
此外,对于视图,您可能需要更新版本的MySQL。
--add-drop-table(放在--skip-opt后面)可能适用于旧版本。
来自手册:
--紧凑型

Produce more compact output. This option enables the --skip-add-drop-table, --skip-add-locks, --skip-comments,
       --skip-disable-keys, and --skip-set-charset options.

           Note
           Prior to MySQL 5.1.21, this option did not create valid SQL if the database dump contained views. The recreation of
           views requires the creation and removal of temporary tables and this option suppressed the removal of those temporary
           tables. As a workaround, use --compact with the --add-drop-table option and then manually adjust the dump file.
zzwlnbp8

zzwlnbp83#

MYSQL:转储数据库的过程,函数,视图和触发器。
导出包含所有过程、函数、视图和触发器的数据库沿着表结构及其数据。
mysqldump <other mysqldump options> --routines export.sql

相关问题