Jump to content

dev botao

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


bnobre
  • Este tópico foi criado há 2258 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.