Board logo

标题: [其他] mysql备份执行错误 [打印本页]

作者: phper    时间: 2008-8-28 08:20     标题: mysql备份执行错误

echo off
@echo step.1:通过获取当前时间来构建要创建的文件名
set dst=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
@echo step.2:检查backup文件夹是否存在,如果不存在则创建
if exist D:\temp\backup goto start
md d:\temp\backup
:start
@echo step.3:检查要创建的文件是否存在,如果存在则删除
if exist D:\temp\backup\%dst%.text del D:\temp\backup\%dst%.text /y
@echo step.4:备份数据库
mysqldump -untdba -pntdba --database zwkj > D:\temp\backup\%dst%.text
@echo finish:数据库备份完成

以上代码执行后,可以备份数据库,但提示以下信息
mysqldump: Got error: 1102: Incorrect database name '81644.text' when selecting
the database

麻烦高手们看看。
作者: Batcher    时间: 2008-8-28 09:41

把运行结果截图上来看看:
  1. @echo off
  2. echo step.1:通过获取当前时间来构建要创建的文件名
  3. set dst=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
  4. echo %dst%
  5. echo step.2:检查backup文件夹是否存在,如果不存在则创建
  6. if exist "D:\temp\backup" goto start
  7. md "d:\temp\backup"
  8. :start
  9. echo step.3:检查要创建的文件是否存在,如果存在则删除
  10. if exist "D:\temp\backup\%dst%.text" del "D:\temp\backup\%dst%.text" /y
  11. echo step.4:备份数据库
  12. mysqldump -untdba -pntdba --database zwkj>"D:\temp\backup\%dst%.text"
  13. echo finish:数据库备份完成
  14. pause
复制代码

作者: phper    时间: 2008-8-28 10:09

@echo off
echo step.1:通过获取当前时间来构建要创建的文件名
set dst=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
echo %dst%
echo step.2:检查backup文件夹是否存在,如果不存在则创建
if exist "D:\temp\backup" goto start
md "d:\temp\backup"
:start
echo step.3:检查要创建的文件是否存在,如果存在则删除
if exist "D:\temp\backup\%dst%.text" del "D:\temp\backup\%dst%.text" /y
echo step.4:备份数据库
mysqldump -untdba -pntdba --database zwkj>"D:\temp\backup\%dst%.text"
echo finish:数据库备份完成
pause

这样就好了。
作者: phper    时间: 2008-8-28 10:10

为什么去掉@就好了,这是什么原因啊?
作者: Batcher    时间: 2008-8-28 13:18

原因不在于去掉@,而是路径加了双引号。
作者: phper    时间: 2008-8-28 14:58

还有一个问题,同样的批处理,为什么我在XP系统中,备份的文件名为20080828145747.text。在WIN2000 SERVER系统中,备份文件名为星期四.text
作者: Batcher    时间: 2008-8-28 16:46

set dst=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
因为不同的系统,日期时间的格式也可能不同,直接这样截取系统变量很可能出问题,可以参考一下这个帖子:

批处理标准化获取当前系统日期
http://www.cn-dos.net/forum/viewthread.php?tid=41857




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2