GARANTIR DESCONTO

Fórum Restore e Backup Mysql Delphi #524650

02/07/2015

0

Olá pessoal!
Estou com um problema aqui o qual não consigo resolver.

Estou executado uma rotina para realizar a Restauração de bases de dados do MySQL, com a seguinte rotina:


//Essa rotina e o modelo para Restore
aux := 'cmd.exe /c " '+MeuDiretorio+'mysql -u root ';
aux := aux + 'basededados < ' + arquivo + '"';


if not createProcessSimple(aux) then
ShowMessage('RESTAURAÇÃO NÃO FOI PROCESSADA!')
else
begin
ShowMessage('Restauração Realizada!');
ShowMessage('SAIA DO SISTEMA E ENTRE NOVAMENTE');
btnRestaurar.Caption := 'Restaurar';
end;


function TfrmConfBd.CreateProcessSimple(cmd: string):boolean;
var SUInfo: TStartupInfo;
ProcInfo: TProcessInformation;
begin
FillChar(SUInfo, SizeOf(SUInfo), #0);
SUInfo.cb := SizeOf(SUInfo);
SUInfo.dwFlags := STARTF_USESHOWWINDOW;
SUInfo.wShowWindow := SW_HIDE;
result := CreateProcess(nil, PChar(cmd), nil, nil, false, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, SUInfo, ProcInfo);
if result then
begin
WaitForSingleObject(ProcInfo.hProcess, INFINITE);
CloseHandle(ProcInfo.hProcess);
CloseHandle(ProcInfo.hThread);
end;
end;



Na variável meu diretório eu estava pegando o diretório padrão do sistema(executável), onde coloquei o Mysqldump e o Mysql.
Agora quero ao invés de executar o Mysqldump e o Mysql de dentro da raiz do meu executável, executar de dentro da pasta BIN do mysql, porem, não funciona. Pego o diretório certinho da pasta BIN, mas ao rodar a rotina os Restores não são feitos e os Backups ficam vazios.
Fábio Ribeiro

Fábio Ribeiro

Responder

Posts

02/07/2015

Dorivan Sousa

olha o conteudo que ta ficando na variavel MeuDiretorio
se nao precisa por aspas... no dos pra executar comandos de diretorios com espaço entre os nomes tem que colocar "C:\Arquivos de Programas\Progra.exe"
Responder

Gostei + 0

02/07/2015

Fábio Ribeiro

Estão indo com aspas sim!
olha o conteudo que ta ficando na variavel MeuDiretorio
se nao precisa por aspas... no dos pra executar comandos de diretorios com espaço entre os nomes tem que colocar "C:\Arquivos de Programas\Progra.exe"


Estão indo com aspas duplas sim!

O mesmo comando usando o Mysqldump e Mysql de dentro da pasta do executavel funciona, porem, utilizando da raiz BIN do Mysql não.
Responder

Gostei + 0

02/07/2015

Dorivan Sousa

qual windows vc ta usando? qual o caminho da pasta BIN? nao seria permissao de acesso a essa pasta?
Responder

Gostei + 0

02/07/2015

Fábio Ribeiro

qual windows vc ta usando? qual o caminho da pasta BIN? nao seria permissao de acesso a essa pasta?


Uso Windows 8. Suspeitei disso também, mas, mesmo dando permissão total a Todos na pasta, não vai.
Responder

Gostei + 0

02/07/2015

Dorivan Sousa

pra ter certeza tente "runas"

runas /usuario:Dorivan notepad.exe


/usuario é o parametro depois dos dois pontos vc coloca o nome do seu usuario adminstrador e ele vai pedir a senha

posta ai o caminho do mysql completo.
Responder

Gostei + 0

02/07/2015

Fábio Ribeiro

Não sei como nem o porque, mas consegui resolver o problema de uma forma misteriosa, assim:

o diretorio deveria ter aspas duplas abrindo e fechando. obs: Meu diretório continha exemplo do Restore:

"C:\pararararararar"

Porem fazendo alguns testes, a rotina de restore funcionou colocando somente da seguinte forma:

""C:\pararararararar" (duas aspas duplas abrindo)

Para Backup funciona normalmente com "C:\pararararararar"

o comando todo ficou assim:

cmd.exe /c ""C:\parararar\mysql" -u usuario -psenha database < teste.sql
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar