我正在使用命令行来备份和恢复MYSQL数据库。
让我使用具有视图和过程的Database Data1。
在Cmd line
时,我使用mysqldump
即
..>bin> mysqldump -u root -proot Data1 > Datafile.mysql
当我使用上面的Cmd时,它使用Dtafile.mysql
在Mysql的bin文件夹上创建一个备份文件
名称。
但问题是它创建了仅备份表,而不是程序。
当我在空白数据库“Data2”中恢复它时
..bin> mysql - u root -proot Data2 < Dataafile.mysql
它的作用是,它创建所有表并将视图转换为表,并且没有恢复过程。
表示我无法使用所有表格,视图和过程恢复完整数据库备份。
你们任何人都可以帮助它吗? 我非常感谢。
答案 0 :(得分:11)
包含mysqldump的“--routines”参数,它将转储过程。
编辑#1:
你的mysqldump命令现在应该是,
mysqldump -u root -proot --routines Data1 > Datafile.mysql
编辑#2:
如果要保留视图,还需要添加--add-drop-table开关。原因是视图分两步创建(首先是虚拟表,然后是真实视图)。另请注意,表和视图共享相同的名称空间,因此不要被mysqlclient中“Show Tables”命令给出的输出误导。如果该命令显示创建视图查询然后使用bingo,请使用“显示创建视图vw_test”,同时确保已正确恢复视图,将一些数据插入到其他数据库的相关表中,然后运行选择查询。看来,如果数据比你击中靶心还要紧张,那就拍拍自己吧:)否则你总能回到Stackoverflow这个美妙的社区。
所以(为了维护视图)你的mysqldump命令现在看起来应该是这样的
mysqldump -u root -proot --routines --add-drop-table Data1 > Datafile.mysql
HTH
答案 1 :(得分:-1)