我正在使用命令行来备份和恢复MYSQL数据库。假设我有一个数据库Data1,其中包含视图和过程。在Cmd line中,我使用mysqldump,即
..>bin> mysqldump -u root -proot Data1 > Datafile.mysql当我使用上面的命令时,它在Mysql的bin文件夹上创建了一个备份文件,文件名为Dtafile.mysql。
但问题是它只创建表的备份,而不是过程的备份。
当我在一个空白数据库"Data2“中恢复它的时候
..bin> mysql - u root -proot Data2 < Dataafile.mysql它所做的是创建所有的表,并将视图转换为表,并且没有恢复任何过程。
这意味着我无法恢复包含所有表、视图和过程的完整数据库备份。
你们中有谁能控制住它..我会非常感谢的。
发布于 2009-05-05 08:27:04
包括mysqldump的"--routines“参数,它将转储过程。
编辑#1 : mysqldump命令现在应该如下所示:
mysqldump -u root -proot --routines Data1 > Datafile.mysql编辑#2:
如果希望保留视图,还需要添加-- add -drop-table开关。原因是视图是分两步创建的(首先是虚拟表,然后是真正的视图)。另外请注意,表和视图共享相同的名称空间,所以不要被mysqlclient中的"Show Tables“命令给出的输出所误导。改为使用“显示创建视图vw_test”,如果该命令显示您创建视图查询,然后宾果,也是为了确保视图已被正确恢复插入一些数据到您的其他数据库中的相关表,然后在视图上运行选择查询,如果数据捆绑比你击中公牛眼,拍拍自己的背:)否则你可以随时返回到这个美妙的社区在Stackoverflow。
因此(为了维护视图) mysqldump命令现在应该如下所示
mysqldump -u root -proot --routines --add-drop-table Data1 > Datafile.mysqlHTH
发布于 2013-04-24 16:19:12
https://stackoverflow.com/questions/823841
复制相似问题