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

mysqldump仅查看定义、触发器、例程和事件,mysql,mysqldump,Mysql,Mysqldump,我希望能够将这些数据库对象导出到文件中。这样,以后运行该文件就能够在原始数据库或不同的数据库中重新创建相同的视图、触发器、函数、存储过程和事件 换句话说,我不需要表定义及其关联的索引和约束 我本以为mysqldump上会有直接的选项,但事实似乎并非如此 这对我来说几乎可以做到: mysqldump -u root -p source_database --no-data --no-create-db --no-create-info --routines --triggers --skip-o

我希望能够将这些数据库对象导出到文件中。这样,以后运行该文件就能够在原始数据库或不同的数据库中重新创建相同的视图、触发器、函数、存储过程和事件

换句话说,我不需要表定义及其关联的索引和约束

我本以为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
但明显缺失的是事件和观点。此外,我需要根据具体情况删除或替换每个对象,因为它可能已经存在

如果你能朝着正确的方向轻推我,我将不胜感激。也许我需要利用脚本来实现这一点

编辑:为什么我需要这个

我希望能够运行一个脚本,一次过重新创建所有这些对象。这可能是生产服务器维护的一部分,使用来自开发服务器的更新副本


现在,prod服务器上的某些表可能也需要更新或更改,但这些表更敏感,需要更多的考虑。我的理解是,你可以每天24次删除和重新创建视图、事件、触发器和例程,现在我夸大了!不必担心数据冲突。

试试这个,我已经试过了,它没有在.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

您需要添加-事件

此外,对于视图,您可能需要更新版本的MySQL

-添加放置表格放在后面-跳过选项可能适用于旧版本

从手册中:

-紧凑的

       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.

MYSQL:使用过程、函数、视图和触发器转储数据库

导出包含所有过程、函数、视图和触发器以及表结构及其数据的数据库


mysqldump-routines export.sql是否转储事件和视图?我没有包含事件和视图的表。你可以试试。。正如我在问题中已经说过的那样,只根据MySQL指南锁定表,但明显缺少事件和视图。这意味着它们不会被丢弃。My DB确实有事件和视图。是否只备份表?可能有一个解决方法,但解释为什么要排除表但包含视图,以及如何使用此文件可能很重要。-例程将只获取存储过程和函数。注意:mysqldump不会提供转储视图的方法。