Fórum BACKUP DO BANCO DE DADOS MYSQL DELPHI 7 #472368
08/03/2014
0
Um abraço a todos!!!
Adailson Cosme
Curtir tópico
+ 0Post mais votado
08/03/2014
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;e depois o seguinte comando :
aux := 'cmd.exe /c "mysqldump --opt --flush-logs --triggers --port=' + edtlPorta.text;
aux := aux + ' --user=' + edtlUsuario.Text + ' --password=' + edtlSenha.Text;
aux := aux + ' --result-file=Backup\backup.sql --databases ' + edtlBanco.Text +'"';
// ShowMessage(aux);
if not createProcessSimple(aux) then
ShowMessage('BACKUP NÃO FOI PROCESSADO!')
else
ShowMessage('Backup Realizado!');sendo que o programa mysqldump está no mesmo diretório do meu programa.
espero que ajude.
Marcos Saffran
Gostei + 1
Mais Posts
08/03/2014
Adailson Cosme
Gostei + 0
08/03/2014
Adailson Cosme
Sem abusar da sua experiência e boa vontade...vc poderia me ajudar a como carregar esse banco,.
ex.:OpenDialogs..!?
O meu banco não tem senha...como faço com os edit's que vc postou? Desculpe a minha ignorância!
Gostei + 0
08/03/2014
Adailson Cosme
Sem abusar da sua experiência e boa vontade...vc poderia me ajudar a como carregar esse banco,.
ex.:OpenDialogs..!?
O meu banco não tem senha...como faço com os edit's que vc postou? Desculpe a minha ignorância!
#codigo
aux := 'cmd.exe /c "mysqldump --opt --flush-logs --triggers --port=' + edtlPorta.text;
aux := aux + ' --user=' + edtlUsuario.Text + ' --password=' + edtlSenha.Text;
aux := aux + ' --result-file=Backup\backup.sql --databases ' + edtlBanco.Text +'"';
Gostei + 0
08/03/2014
Marcos Saffran
caso seu banco não tenha senha, altere
aux := aux + ' --user=' + edtlUsuario.Text + ' --password=' + edtlSenha.Text;
para
aux := aux + ' --user=' + edtlUsuario.Text + ' --password= ';
o aquivo criado é no padrão sql e possui o nome backup.sql, você pode alterar o nome da forma que desejar
para restaurá-lo eu uso a rotina abaixo:
aux := 'cmd.exe /c "mysql -u root '; //usuário root sem senha
aux := aux + edtlBanco.Text + ' < Backup\backup.sql"'; // edtlBanco.text é o nome da base de dados
// ShowMessage(aux);
if not createProcessSimple(aux) then
ShowMessage('RESTAURAÇÃO NÃO FOI PROCESSADA!')
else
lblInfo.Color := clRed;
lblInfo.Caption := 'Saia do sistema';
lblInfo.Refresh;
Gostei + 0
08/03/2014
Marcos Saffran
if OpenDialog1.Execute then
begin
arquivo := OpenDialog1.FileName;
end
else
begin
ShowMessage('Escolha algum arquivo, para executar a restauração.');
exit;
end;
btnRestaurar.Caption := 'AGUARDE...';
aux := 'cmd.exe /c "mysql -u root ';
aux := aux + 'basededados < ' + arquivo + '"';
// Memo1.Lines.Add(aux);
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;Gostei + 0
08/03/2014
Adailson Cosme
Gostei + 0
08/03/2014
Adailson Cosme
Está gravando com o banco vazio ...me dê mais uma ajuda.
...esse mydump.exe é só o executável ? Eu setou o colocando dentro da pasta da aplicação C:\Projeto Sad\
Veja o código e função:
public
{ Public declarations }
function CreateProcessSimple(cmd: string):boolean;
function Tfrm_cad_processo.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;
procedure Tfrm_cad_processo.sButton1Click(Sender: TObject);
var
aux:string;
begin
aux := 'cmd.exe /c "mysqldump --opt --flush-logs --triggers --port=' ;
aux := aux + '--user=' + ' --password=';
aux := aux + '--result-file=Backup\xurumelas.sql --databases' +'"';
// ShowMessage(aux);
if not createProcessSimple(aux) then
ShowMessage('BACKUP NÃO FOI PROCESSADO!')
else
ShowMessage('Backup Realizado!');
end;
SERÁ TEM ALGO ERRADO?
Gostei + 0
08/03/2014
Marcos Saffran
altere para o seguinte:
aux := 'cmd.exe /c "mysqldump --opt --flush-logs --triggers ' ;
aux := aux + '--user=root --password= ';
aux := aux + '--result-file=Backup\xurumelas.sql --databases nomedobancodedados"';
o --result-file é o arquivo que será criado, no meu exemplo é criado dentro de uma pasta Backup que há dentro do diretório do progrma.
o --database é o nome do banco de dados que desejamos fazer o backup
para verificar se o comando está funcionando abra um prompt de comando e execute o comando manualmente:
mysqldump --opt --flush-logs --triggers --user=root --password= --result-file=xurumelas.sql --databases nomedobancodedados
e veja se há alguma mensagem ou se executou corretamente.
Gostei + 0
09/03/2014
Adailson Cosme
Eu estou usando o Xampp. e o comando não está sendo reconhecido via cmd.
O xampp está conectado com o aparche e mysql. Tanto é que a aplicação funciona e se conecta, mas não gera o banco.sql. O nome do meu banco é SAD e fiz todas as alteraçoes que vc me passou. Me ajuda mais um pouco...
Será q vu ter q desinstala-lo e instalar o mysql.exe ?
....consegui entrar no mysqld pelo xamp: c:\xamppp\mysql\bin\mysql.exe
mas ainda não gera o arquivo atraves do prompt!!
Gostei + 0
09/03/2014
Marcos Saffran
no diretório c:\xamppp\mysql\bin\ deve ter os dois programas, o mysql.exe e o mysqldump.exe,
copie-os para dentro do diretório do executável do seu programa e execute, via prompt de comando o seguinte comando:
mysqldump --opt --flush-logs --triggers --user=root --password= --result-file=xurumelas.sql --databases SAD
e verifique se criou o arquivo xurumelas.sql, senão tire um print screen do prompt de comando com o resultado, para poder te ajudar.
Depois que funcionar pelo prompt de comando poderemos passar o comando para o delphi.
Gostei + 0
09/03/2014
Adailson Cosme
dá ENTER e aparece a seta abaixo.
Ainda não funcionou, mas sei que vai funcionar!!
Gostei + 0
09/03/2014
Marcos Saffran
isso está ocorrendo pois você está usando o comando dentro do mysql, no seu windows vá em iniciar -> todos programas -> acessórios -> Prompt de comando, nas janela 'DOS' que abrir vá até o diretório e execute o comando.
Gostei + 0
09/03/2014
Adailson Cosme
não reconheceu os cmd's.
Gostei + 0
09/03/2014
Marcos Saffran
Gostei + 0
10/03/2014
Adailson Cosme
Me explique melhor...
A pasta onde está a minha aplicação ==> C:\Projeto Sad
Onde devo colocar os executáveis?
Em C:\ ou em C:\Projeto Sad ? Nesta segunda opção eu já coloquei.
Um abraço!!
Estou no trabalho. Ainda não poço testar. Quando chegar em casa eu texto. Se vc puder me adiantar ?
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)