Ir para conteúdo
  • Cadastre-se

dev botao

Problema restauração MySQL com espaços em branco


bnobre
  • Este tópico foi criado há 2226 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Olá a todos... Há muitos anos faço a restauração do backup de minhas bases em MySQL com um aplicativo que criei em Delphi, segue o código abaixo:

function 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_principal.btn_restaurarClick(Sender: TObject);
begin
  if FileExists(local+'mysql.exe') then
    begin
      if Opendialog1.Execute then
        begin
          if Length('"'+local+'mysql.exe"  -u root --password=senha < ' + OpenDialog1.FileName) > 255 Then
            ShowMessage('O caminho total do arquivo não pode ultrapassar 255 caracteres')
          else
            begin
              lbl_mensagem.Caption := 'Aguarde o Término da Restauração...';
              lbl_mensagem.Refresh;
              createProcessSimple('cmd.exe /c "'+local+'mysql.exe"  -u root --password=senha < ' + OpenDialog1.FileName);
              lbl_mensagem.Caption := '';
              lbl_mensagem.Refresh;
              Application.MessageBox('Restauração efetuada com sucesso','RESTAURAÇÃO CONCLUÍDA', MB_OK);
              Application.Terminate;
            end;
        end;
    end
  else messageBox(handle,'Diretório do SGBD não encontrado','ATENÇÃO!',MB_ICONERROR+mb_OK);
end;

Só tem um detalhe que eu nunca consegui descobrir. Se no endereço do arquivo .SQL que será utilizado na restauração existirem ESPAÇOS EM BRANCO, a restauração não funciona.

Observem que se existirem espaços no endereço do diretório de instalação do MySQL eu não tenho problemas, para tal coloco o mesmo entre aspas duplas, mas se eu colocar as aspas duplas no endereço referente ao arquivo *.SQL usado na restauração não funciona. Aí sempre tenho que restaurar com o arquivo estando em um endereço que não contenha espaços em branco.

Alguém saberia me dizer o porque disso?

Desde já agradeço a atenção de todos

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
1 hora atrás, Juliomar Marchetti disse:

Coloca entre aspas duplas, acho que resolve seu problema!

Então... Como eu mencionei, estranhamente as aspas duplas no endereço do arquivo *.SQL não surtem o mesmo efeito de quando usadas no endereço do MySQL, na verdade quando as uso pára de funcionar, até mesmo quando o endereço do arquivo *.SQL não tem espaços.

Link para o comentário
Compartilhar em outros sites

Em 17/03/2018 at 16:45, doidopb disse:

createProcessSimple('cmd.exe /c "'+local+'mysql.exe"  -u root --password=senha < ' + OpenDialog1.FileName);

ja tentou assim

CreateProcessSimple('cmd.exe /c "'+local+'mysql.exe  -u root --password=senha < ' + OpenDialog1.FileName+'"');

 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
6 horas atrás, datilas disse:

ja tentou assim


CreateProcessSimple('cmd.exe /c "'+local+'mysql.exe  -u root --password=senha < ' + OpenDialog1.FileName+'"');

 

Olá meu amigo, tudo bom?

Então... Testei, assim não funciona nem com ou sem espaço. É um mistério!!!!!!!!!!!!!

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 2226 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...