BACKUP DO BANCO DE DADOS MYSQL DELPHI 7
Um abraço a todos!!!
Adailson Cosme
Melhor post
Marcos Saffran
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.
Mais Respostas
Adailson Cosme
08/03/2014
Adailson Cosme
08/03/2014
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!
Adailson Cosme
08/03/2014
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 +'"';
Marcos Saffran
08/03/2014
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;
Marcos Saffran
08/03/2014
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;
Adailson Cosme
08/03/2014
Adailson Cosme
08/03/2014
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?
Marcos Saffran
08/03/2014
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.
Adailson Cosme
08/03/2014
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!!
Marcos Saffran
08/03/2014
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.
Adailson Cosme
08/03/2014
dá ENTER e aparece a seta abaixo.
Ainda não funcionou, mas sei que vai funcionar!!
Marcos Saffran
08/03/2014
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.
Adailson Cosme
08/03/2014
não reconheceu os cmd's.
Marcos Saffran
08/03/2014
Adailson Cosme
08/03/2014
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 ?
Marcos Saffran
08/03/2014
estamos aqui para ajudar, não se preocupe.
Se os executáveis já estão em C:\Projeto Sad, então quando você estiver no prompt de comando do windows digite:
cd \"Projeto Sad" ou cd c:\"Projeto Sad"
tecle enter
aí você deverá estar no mesmo diretório que estão os executáveis, então é só usar o comando indicado anteriormente.
Qualquer coisa nos avise.
Marcos Saffran
08/03/2014
estamos aqui para ajudar, não se preocupe.
Se os executáveis já estão em C:\Projeto Sad, então quando você estiver no prompt de comando do windows digite:
cd \"Projeto Sad" ou cd c:\"Projeto Sad"
tecle enter
aí você deverá estar no mesmo diretório que estão os executáveis, então é só usar o comando indicado anteriormente.
Qualquer coisa nos avise.
Adailson Cosme
08/03/2014
Marcos Saffran
08/03/2014
Olá Adailson,
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.
Postado em: 09/03/2014 19:36:08
não reconheceu os cmd's.
Postado em: 09/03/2014 22:24:18
Isso ocorreu pois o mysqldump não está no diretório que você está usando, vá até o diretório que possui o executável ou copie-o para o diretório que você está usando.
Postado em: 10/03/2014 10:56:58
Desculpe estar te Chateando....
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 ?
Postado em: 10/03/2014 12:16:13
Olá Adailson,
estamos aqui para ajudar, não se preocupe.
Se os executáveis já estão em C:\Projeto Sad, então quando você estiver no prompt de comando do windows digite:
cd \"Projeto Sad" ou cd c:\"Projeto Sad"
tecle enter
aí você deverá estar no mesmo diretório que estão os executáveis, então é só usar o comando indicado anteriormente.
Qualquer coisa nos avise.
Postado em: 10/03/2014 19:53:52
Ok! Então desse modo q vc falou: cd \"Projeto Sad" ou cd c:\"Projeto Sad" eu teria que colocar isso dentro dos comandos do delphi?...me ajuda
Olá Adailson,
não é para colocar dentro dos comandos do delphi não, ainda estamos tentando fazer o comando funcionar dentro do comando de prompt, depois que der certo é que passaremos para o delphi.
Adailson Cosme
08/03/2014
Enfim consegui! Os comandos foram reconhecidos.
Apareceu um outro obstáculo: Entende-se que o Xampp usa uma senha para se conectar ....!!!analise para mim esta imagem...
O Xampp é executado junto com o windows e não pede senha..
Aparece: ACESSO NEGADO
Usa Senha:YES
[img]http://arquivo.devmedia.com.br/forum/imagem/362363-20140311-091652.png[/img]
Adailson Cosme
08/03/2014
[img]http://arquivo.devmedia.com.br/forum/imagem/362363-20140311-094705.png[/img]
[img]http://arquivo.devmedia.com.br/forum/imagem/362363-20140311-094415.png[/img]
Marcos Saffran
08/03/2014
Enfim consegui! Os comandos foram reconhecidos.
Apareceu um outro obstáculo: Entende-se que o Xampp usa uma senha para se conectar ....!!!analise para mim esta imagem...
O Xampp é executado junto com o windows e não pede senha..
Aparece: ACESSO NEGADO
Usa Senha:YES
[img]http://arquivo.devmedia.com.br/forum/imagem/362363-20140311-091652.png[/img]
Olá Adailson,
por favor coloque um espaço depois do "--password=" e me informe.
Adailson Cosme
08/03/2014
Banco Criado com sucesso!!!!
Show de bola! Nem acredito!! Legal!!
Agora me ajuda a transferí-los para o delphi com os códigos iniciais(abaixo), tomando-se por base que minha aplicação vai estar na unidade C:\Projeto Sad\
...e que o MYDUMP.EXE e o MYSQL.EXE estão dentro desta pasta no diretório.
aux := 'cmd.exe /c "mysqldump --opt --flush-logs --triggers' ;
aux := aux + '--user=root --password= ';
aux := aux + '--result-file=Backup\xurumelas.sql --databases sad"';
Marcos Saffran
08/03/2014
que bom que funcionou,
agora, para usar o comando no Delphi você pode usar o abaixo:
aux := 'cmd.exe /c "mysqldump --opt --flush-logs --triggers ' ;
aux := aux + '--user=root --password= ';
aux := aux + '--result-file=Backup\xurumelas.sql --databases sad"';
lembrando que o arquivo xurumelas.sql será criado dentro da pasta Backup, que deve estar criada dentro do diretório do programa.
Caso não queira usar a pasta de Backup e salvar na mesma pasta do programa, altere a última linha para:
aux := aux + '--result-file=xurumelas.sql --databases sad"';
Adailson Cosme
08/03/2014
No momento estou no trabalho, mas quando chegar em casa testarei os comando no delphi.
Só para eu não perder tempo. ..
Lembra que eu te falei que minha aplicação esta em ==> C:\Projeto Sad ????? Essa parte do código abaixo é assim mesmo?
aux := 'cmd.exe /c "mysqldump --opt --flush-logs --triggers ' ;
...pois o dump.exe está em C:\Projeto Sad.
Eu não teria que apontá-lo para C:\Projeto Sad.
...e esse arquivo cmd.exe ? Será necessário colocá-lo em C:\Projeto Sad
Um abraço e obrigado!
Até mais tarde!!
Marcos Saffran
08/03/2014
No momento estou no trabalho, mas quando chegar em casa testarei os comando no delphi.
Só para eu não perder tempo. ..
Lembra que eu te falei que minha aplicação esta em ==> C:\Projeto Sad ????? Essa parte do código abaixo é assim mesmo?
aux := 'cmd.exe /c "mysqldump --opt --flush-logs --triggers ' ;
...pois o dump.exe está em C:\Projeto Sad.
Eu não teria que apontá-lo para C:\Projeto Sad.
...e esse arquivo cmd.exe ? Será necessário colocá-lo em C:\Projeto Sad
Um abraço e obrigado!
Até mais tarde!!
Olá Adailson,
Você só precisará apontar para c:\Projeto sad, se o executável do projeto estiver em outro diretório, o delphi ou o windows buscará executar o programa que está no mesmo diretório ou nos diretórios que estão no caminho (path) do windows.
O arquivo cmd.exe já está no caminho (path) do windows, ele é que executa o prompt de comando do windows, portanto não é necessário colocá-lo em c:\Projeto Sad, não.
Adailson Cosme
08/03/2014
Marcos Saffran
08/03/2014
Olá Adailson,
se o executável do seu projeto está no mesmo diretório em que estão os programas mysqld e mysqldump, não precisa fazer mais nada não.
Adailson Cosme
08/03/2014
Marcos Saffran
08/03/2014
Olá Adailson,
se o executável do seu projeto está no mesmo diretório em que estão os programas mysqld e mysqldump, não precisa fazer mais nada não.
Adailson Cosme
08/03/2014
Pelo que me recordo o comando não deu certo pelo delphi somente pelo prompt de comando quando entramos dentro da pasta( C:\Projeto Sad) , onde o meu projeto esta juntamente com os aplicativos mydump e mysql.
este códigos abaixo não estão direcionados para a pasta c:\ ??? Através do /c ??? Como faço para direcionar, pois não deu certo!!
aux := 'cmd.exe /c "mysqldump --opt --flush-logs --triggers' ;
Marcos Saffran
08/03/2014
que bom que funcionou,
agora, para usar o comando no Delphi você pode usar o abaixo:
aux := 'cmd.exe /c "mysqldump --opt --flush-logs --triggers ' ;
aux := aux + '--user=root --password= ';
aux := aux + '--result-file=Backup\xurumelas.sql --databases sad"';
lembrando que o arquivo xurumelas.sql será criado dentro da pasta Backup, que deve estar criada dentro do diretório do programa.
Caso não queira usar a pasta de Backup e salvar na mesma pasta do programa, altere a última linha para:
aux := aux + '--result-file=xurumelas.sql --databases sad"';
Talvez você esteja executando dentro do delphi e não através do executável que deve estar no diretório do projeto, para executar pelo delphi você também tem que copiar os executáveis mysql e mysqldump para onde está o executável.
Adailson Cosme
08/03/2014
Não está funcionando pelo delphi!!
Os dois arquivos : mysql.exe e o mysqldump.exe estão dentro da pasta do projetos,
aux := 'cmd.exe /c "mysqldump --opt --flush-logs --triggers' ;
aux := aux + '--user=root --password= ';
aux := aux + '--result-file=Backup\xurumelas2.sql --databases sad"';
...pelo prompt de cmd funcionou, desde que eu entra na pasta atraves /Cd Sad Projeto.
será que eu não deveria entrar dentro da pasta, alterando este código?
aux := 'cmd.exe /c "mysqldump --opt --flush-logs --triggers' ; ....para.....
aux := 'cmd.exe /c d/Projeto Sad"mysqldump --opt --flush-logs --triggers' ;
Adailson Cosme
08/03/2014
Muito Obrigado por tudo!!
...Tinha declarado a função sem o '(' ;
Muito Obrigado por tudo!!
Depois eu contacto!!
Agora vou começar a fazer o carregamento deste arquivo gravado!!!
Fique com Deus!!!
Marcos Saffran
08/03/2014
quanto a colocar no comando o diretório "Projeto Sad', eu não sei, pois não consegui fazê-lo para diretórios que possuem espaço em seu nome.
Se tiver dúvida na restauração nos avise.
Adailson Cosme
08/03/2014
Quanto à restauração ainda não estou conseguindo. Depois eu te peço uma orientação.
O que está acontecendo agora é que quando eu vou restaurar o banco utilizando um gerenciador(DBforge studio) aparece um erro(não sei se é de sintaxe). Veja
[img]http://arquivo.devmedia.com.br/forum/imagem/362363-20140313-163113.png[/img]
E o banco não chega a carregar.
Já exclui os registros de chaves existentes, tentei carregar por cima etc... e nada.
Podes me ajudar?
Um abraço.
Marcos Saffran
08/03/2014
eu não conheço o DBforge studio, mas essa mensagem é de perda de conexão com o servidor MySQL.
Percebi que você está executando o comando sql com o banco 'sad' selecionado, tente deixar selecionado o 'sad.localhost' e execute o comando sql (Sad.sql).
Você pode tentar restaurar pelo prompt de comando do windows:
mysql -u root sad < Backup\Sad.sql
execute o comando acima dentro do diretório "c:\PROJETO SAD DGST".
Até mais.
Adailson Cosme
08/03/2014
Vou esquecer um pouco o gerenciador de banco dbforge studio!!
Em relação a restauração pelo delphi não está carregando o arquivo. Tem alguma coisa errada com este código?
procedure Tfrm_cad_processo.btnrestaurarClick(Sender: TObject);
var
aux,arquivo:string;
begin
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 + 'backup < ' + 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;
end;
O backup está sendo salvo em C:\Projeto sad\backup
O nome do banco é SAD
Pra encerrar este tópico só falta o carregamento!
Me ajuda mais uma vez!
Marcos Saffran
08/03/2014
Na linha:
aux := aux + 'backup < ' + arquivo + '"';
você está restaurando o banco de dados para um banco de dados nomeado 'backup'.
Como o seu banco de dados tem o nome de 'Sad', você deve alterar a linha para:
aux := aux + 'Sad < ' + arquivo + '"';
Qualquer coisa nos avise.
Adailson Cosme
08/03/2014
Marcos Saffran
08/03/2014
então vamos verificar o que está ocorrendo.
Usando o prompt de comando do windows vá até o diretório do seu projeto e digite o comando abaixo:
mysql -u root Sad < backup\Sad.sql
e me informe o que ocorrer;
Adailson Cosme
08/03/2014
Ja tentei em todos os diretórios: ==>C:\Projeto sad ; C:\projeto sad\backup
[img]http://arquivo.devmedia.com.br/forum/imagem/362363-20140314-223841.png[/img]
Já me certifiquei de que o arquivo sad.sql se encontra nos diretorios!!
Um abraço!!
Marcos Saffran
08/03/2014
Ja tentei em todos os diretórios: ==>C:\Projeto sad ; C:\projeto sad\backup
[img]http://arquivo.devmedia.com.br/forum/imagem/362363-20140314-223841.png[/img]
Já me certifiquei de que o arquivo sad.sql se encontra nos diretorios!!
Um abraço!!
Isso é porque o mysql não está no diretório, copie-o para dentro do diretório c:\Projeto Sad.
Adailson Cosme
08/03/2014
Realmente o mysql nao estava.....
Nota 10!!!
Obrigado!!
Adailson Cosme
08/03/2014
Será que o arquivo está declarado certo?(string).
Por favor dê mais uma olhada no código pra mim..
obrigado
Marcos Saffran
08/03/2014
por favor me mostre o seu código para a restauração.
Adailson Cosme
08/03/2014
FUNÇÃO:
function CreateProcessSimple(cmd: string):boolean;
procedure btnrestaurarClick(Sender: TObject);
private
{ Private declarations }
procedure Tfrm_cad_processo.btnrestaurarClick(Sender: TObject);
var
aux,arquivo:string;
begin
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 + 'Sad < ' + 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;
end;
***********************************************************************************************************************************
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;
Obrigado!!!
Marcos Saffran
08/03/2014
estranho, está igual ao que uso e aqui funciona corretamente, você pode postar o resultador da variável aux, para poder analisar?
Adailson Cosme
08/03/2014
Obrigado!
[img]http://arquivo.devmedia.com.br/forum/imagem/362363-20140316-212514.png[/img]
....resultado da variável. Já dei espaços entre o < , tirei espaço, etc..
Engraçado que no prompt de comando funciona, mas no delphi quando busca o arquivo não...
caso eu não consiga, me dê o comando no CMD direto(completo incluindo a pasta sem a busca através da variável!!, pois me confundo após o <.
ou seja, digitando tudo no prompt de comando.
Marcos Saffran
08/03/2014
talvez seja por causa do nome do seu diretório ter espaços, esse é um problema que ainda não consegui resolver.
Você pode configurar a variável 'aux' conforme abaixo:
aux := 'cmd.exe /c "mysql -u root ';
aux := aux + 'Sad < Backup\Sad.sql"'; // aqui o comando mysql buscará o arquivo dentro da pasta Backup, que está dentro do diretório do programa
para executar no prompt de comando, dentro do diretório 'c:\PROJETO SAD DGST', use o seguinte:
mysql -u root Sad < Backup\Sad.sql
Adailson Cosme
08/03/2014
Vou mudar o nome da pasta para um único nome, para ver se funciona!!
Valeu e muito obrigado por tudo!!
Depois vou ver se crio outro tópico para datar a pasta com horario
Jose Silva
08/03/2014
mas gostaria de saber como faco para criar um backup por dia
vamos dizer que ao clicar no botao salvar o backup cria uma pasta com o nome
do dia, hora e mes e salvar dentro dela po backup
uso o delphi7
mysql 5.0
Nelson Santos
08/03/2014
www.3dsistemas.com.br
Fábio Ribeiro
08/03/2014
Primeiro agradeço pois este tópico me ajudou bastante neste problema do Backup.
Esta rotina no qual informaram funcionou corretamente tanto para Backup quanto para o Restore, porém, so funciona caso o Mysqldump e Mysql estejam dentro da raiz do executavel. Se eu tento alterar o diretório mandando pegar o Mysqldump e Mysql de dentro da Pasta BIN do mysql o mesmo não funciona pelo delphi.
Executanto o mesmo comando que e executado no delphi com essa função no CMD, funciona normalmente.
Podem me ajudar?
Fábio Ribeiro
08/03/2014
Ele não executa a restauração e os backups feitos ficam vazios com tamanho 0kb.
Janderson Souza
08/03/2014
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 --vendas ';
Esse codigo esta no botao.
Janderson Souza
08/03/2014
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 --vendas ';
Esse codigo esta no botao.
Bom,deescobrir o motivo, porque ele estava gerando arquivo de backup 0KB.
O motivo era que o mysql.exe, e o mysqldump.exe, estavam em uma pasta no diretorio C:, onde o nome era maior que 8 caracteres, se for maior ele gera arquivo em branco, ou seja 0KB.
Eu renomeei a pasta do meu programa. Onde agora ele tem apenas 5 caracteres, e ta bacana.
Eu chamo pelo delphi atraves do ShellExecute.
Apanhei bastante, mas valew!!
Luiz Silva
08/03/2014