我用下面的方法调用cmd执行备份恢复
STARTUPINFO si;
PROCESS_INFORMATION pi;
si.cb=sizeof(STARTUPINFO);
si.lpReserved=NULL;
si.lpDesktop=NULL;
si.lpTitle=NULL;
si.dwFlags=STARTF_USESHOWWINDOW;
si.wShowWindow=SW_SHOW;
si.cbReserved2=0;
si.lpReserved2=NULL;
CString strProcess;
strProcess.Format("cmd.exe /k \H:\\HI_IMAGE-ACCESS\\Debug\\mysqlrestore.bat"); ////<H:\\HI_IMAGE-ACCESS\\HIWorkstation_Mysql20080920165845.sql");
if(!::CreateProcess(NULL,(LPSTR)(LPCTSTR)strProcess,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi))
{
AfxMessageBox( "CreateProcess failed.请重新选择恢复路径" );
} // Wait until child process exits.
WaitForSingleObject( pi.hProcess, INFINITE ); // Close process and thread handles.
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );其中的批处理文件mysqlrestore.bat是我自己写的,如下:cd ..
c:
cd C:\Program Files\MySQL\MySQL Server 5.0\bin
mysql -u root -pzxy>>H:\HI_IMAGE-ACCESS\HIWorkstation_Mysql20080920170038.sql;
程序的执行结果是cmd进程也产生了,但是没有达到我想要的效果,
H:\HI_IMAGE-ACCESS>cd ..H:\>c:C:\>cd C:\Program Files\MySQL\MySQL Server 5.0\binC:\Program Files\MySQL\MySQL Server 5.0\bin>mysql -u root -pzxy 1>>H:\HI_IMAGE-A
CCESS\HIWorkstation_Mysql20080920170038.sql光标停在了这个地方,怎么回事啊?
还有怎样才能断定数据库已经是恢复好的?(从程序里判断)
STARTUPINFO si;
PROCESS_INFORMATION pi;
si.cb=sizeof(STARTUPINFO);
si.lpReserved=NULL;
si.lpDesktop=NULL;
si.lpTitle=NULL;
si.dwFlags=STARTF_USESHOWWINDOW;
si.wShowWindow=SW_SHOW;
si.cbReserved2=0;
si.lpReserved2=NULL;
CString strProcess;
strProcess.Format("cmd.exe /k \H:\\HI_IMAGE-ACCESS\\Debug\\mysqlrestore.bat"); ////<H:\\HI_IMAGE-ACCESS\\HIWorkstation_Mysql20080920165845.sql");
if(!::CreateProcess(NULL,(LPSTR)(LPCTSTR)strProcess,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi))
{
AfxMessageBox( "CreateProcess failed.请重新选择恢复路径" );
} // Wait until child process exits.
WaitForSingleObject( pi.hProcess, INFINITE ); // Close process and thread handles.
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );其中的批处理文件mysqlrestore.bat是我自己写的,如下:cd ..
c:
cd C:\Program Files\MySQL\MySQL Server 5.0\bin
mysql -u root -pzxy>>H:\HI_IMAGE-ACCESS\HIWorkstation_Mysql20080920170038.sql;
程序的执行结果是cmd进程也产生了,但是没有达到我想要的效果,
H:\HI_IMAGE-ACCESS>cd ..H:\>c:C:\>cd C:\Program Files\MySQL\MySQL Server 5.0\binC:\Program Files\MySQL\MySQL Server 5.0\bin>mysql -u root -pzxy 1>>H:\HI_IMAGE-A
CCESS\HIWorkstation_Mysql20080920170038.sql光标停在了这个地方,怎么回事啊?
还有怎样才能断定数据库已经是恢复好的?(从程序里判断)
mysqldump --all-databases -u root -p密码 > /mysqldata/bak.sql
来备份的你数据库
你在cmd下执行
mysql -u root -pzxy>>H:\HI_IMAGE-ACCESS\HIWorkstation_Mysql20080920170038.sql;
会有同样的问题
cd ..
c:
cd c:\Program Files\MySQL\MySQL Server 5.0\bin
mysqldump -uroot -pzxy --add-drop-table test>>路径的程序中给出的
并且备份已经成功,只是想利用上面的备份.sql执行数据库的恢复。应该怎么解决
cd ..
c:
cd C:\Program Files\MySQL\MySQL Server 5.0\bin
mysql -u root -pzxy < H:\HI_IMAGE-ACCESS\HIWorkstation_Mysql20080920170038.sql
exit
还有我的那个批处理执行的时候总是显示这样H:\HI_IMAGE-ACCESS>cd ..H:\>c:C:\>cd C:\Program Files\MySQL\MySQL Server 5.0\binC:\Program Files\MySQL\MySQL Server 5.0\bin>mysql -u root -pzxy; 1>H:\HIWorkstat
ion_Mysql20080922104455.sql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: Y
ES)这里为什么总是多歌东西呢
批处理文件如下cd ..
c:
cd C:\Program Files\MySQL\MySQL Server 5.0\bin
mysql -u root -pzxy>H:\HIWorkstation_Mysql20080922104455.sql;
--->CreateProcess执行是成功的(CreateProcess只要能执行就可也功)
这里为什么总是多东西呢
--->可能的问题是执行的批处理位置不对
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: Y
ES)
--->用户名/口令出错mysql -u root -pzxy>H:\HIWorkstation_Mysql20080922104455.sql;
---> 1.管道方向不对,要用"<"而非">",这样你的H:\HIWorkstation_Mysql20080922104455.sql文件会被清空,且后面不能有";"号
-----------------
你要先在cmd方式下执行一次批处理,正常后再由程序调用
C:\Program Files\MySQL\MySQL Server 5.0\bin>mysql -hlocalhost -uroot -pzxy<H:\HI
Workstation_Mysql20080922104455.sql;
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: Y
ES)
我的用户名是root,密码是zxy,可为什么还说错误呢批处理的位置在H:\HI_IMAGE-ACCESS\Debug这个目录下放着,在调用批处理的时候我也明确的指定了他的路径
strProcess.Format("cmd.exe /k H:\\HI_IMAGE-ACCESS\\Debug\\mysqlrestore.bat");
if(!::CreateProcess(NULL,(LPSTR)(LPCTSTR)strProcess,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi))
怎么会有问题呢?
C:\Program Files\MySQL\MySQL Server 5.0\bin>mysql -hlocalhost -uroot -pzxy <H:\HI
Workstation_Mysql20080922104455.sql;
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: Y
ES)
用户名密码的问题是因为后恢复那句后面加了;号,但是执行很快的,一闪而过,不过本身数据库备份出来也就25k,但是前几天我试了一次,是有过程的,就是0 query什么的。但是执行批处理的时候还是莫名其妙的添加点东西,这个是怎么回事啊
Workstation_Mysql20080922104455.sql;你上面没有指明要恢复的目标库名称啊..
看看这个:http://hi.baidu.com/itwoody/blog/item/099425fd64ae3d1208244d78.html
如果是全库恢复,是不需要目标库名称的。因为备份出来的SQL中.有connect 数据库名.