我希望能够将这些数据库对象导出到文件中。它应该以这样的方式运行该文件(稍后)能够在原始文件或不同的数据库中重新创建相同的视图,触发器,函数,存储过程和事件。
换句话说,我不想要表定义及其相关的索引和约束。
我原本期望在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
但明显缺少的是events
和views
。此外,我需要根据具体情况删除或替换每个对象,因为它可能已经存在。
我很欣赏任何朝着正确方向的推动。也许我需要利用脚本来实现这个目标?
编辑:我为什么需要这个?
我希望能够运行一次性重新创建所有这些对象的脚本。这可能是维护生产服务器的一部分,使用来自开发服务器的更新对应物。
现在,prod服务器上的某些表可能还需要更新(ALTERED),但这些表更敏感,需要更多考虑。我的理解是,你可以一天24次丢弃并重新创建视图,事件,触发器和例程(现在我夸大了!),而不关心数据冲突。
答案 0 :(得分:0)
您需要添加“--events”
此外,对于视图,您可能需要更新版本的MySQL。
- add-drop-table(在--skip-opt之后放置)可能适用于旧版本。
从手册:
- 紧凑
0
答案 1 :(得分:0)
MYSQL:转储包含过程,函数,视图和触发器的数据库。
导出数据库,其中包含所有过程,函数,视图和触发器以及表结构及其数据。
mysqldump <other mysqldump options> --routines export.sql
答案 2 :(得分:-1)
尝试这个我试过它不会在.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