Jump to content

dev botao

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


bnobre
  • Este tópico foi criado há 2390 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á 2390 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.

The popup will be closed in 10 seconds...