Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.11.2013, 00:54   #1
Dozent
Форумчанин
 
Регистрация: 21.05.2008
Сообщений: 495
По умолчанию Создание дампа MySQL

Доброго времени суток, возможно не в тот раздел пишу, вопрос такой.
Делаю резервное копирование базы данных MySQL через mysqldump.exe, который лежит в недрах MySQL перенёс данный ехе ближе к ехе файлу проекта, чото перестало собирать дамп базы, как то можно выдти из затруднения? Хочется положить этот инструмент рядом с ехе файлом и не лазить далеко в MySQL...

Код:
procedure TfrmBase.N11Click(Sender: TObject);
var
  S, SDir, TDir: AnsiString;
  ParamString: String;
  C: Cardinal;
begin
  // Сохранить все данные в архиве
  // Result := False;
  // S := ParamStr(0); // Путь к программе
  SDir := ExtractFilePath(Application.exename);
  TDir := SDir + 'Data\BackUp\';
  // Диалог для получения имени архива
  // if TDir = '' then
  // Exit;
  // if not ForceDirectories(TDir) then
  // Exit;
  S := adConnection.Params.Values['Database'];
  // ParamString := Format('--routines  -uroot -p$erver -all %s > "%s%s.sql"', [S, TDir, S]) + #0;
  ParamString :=
    Format('--routines -uroot -hlocalhost -p$erver  %s --result-file="%s%s.sql"',
    [S, TDir, S]) + #0;
  C := ShellExecute(0, nil, pchar(SDir + 'mysqldump.exe'),
    { '"C:\Program Files (x86)\MySQL\MySQL Workbench CE 6.0.6\mysqldump.exe"', }
    pwidechar(ParamString), nil, SW_HIDE);
  // Result := C > 0;
  ShowMessage('Резервная копия создана! ' + TDir + S + '.sql');
end;
Dozent вне форума Ответить с цитированием
Старый 06.11.2013, 01:06   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Задам нескромный вопрос: А почему на Делфи? Как раз в таких делах BAT файл проще всего.
Еще один нескромный: Зачем закоментировал Result := C > 0;? Проверка на ошибки в таких делах важна. Раскомментируй и поставь IF, получи сообщение об ошибке и проанализируй его.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.11.2013, 01:22   #3
Dozent
Форумчанин
 
Регистрация: 21.05.2008
Сообщений: 495
По умолчанию

ну у меня возвращает 2, указаный файл не найден... Хотя он иммено там лежит...
Dozent вне форума Ответить с цитированием
Старый 08.11.2013, 01:54   #4
Dozent
Форумчанин
 
Регистрация: 21.05.2008
Сообщений: 495
По умолчанию

Код:
C := ShellExecute(0, nil, pchar(Format('%smysqldump.exe',[SDir])),  pwidechar(ParamString), nil, SW_HIDE);
вот так заработало
Dozent вне форума Ответить с цитированием
Старый 09.11.2013, 21:55   #5
Dozent
Форумчанин
 
Регистрация: 21.05.2008
Сообщений: 495
По умолчанию

) странно конечно, но рестор чото не хочет делатся...

Код:
procedure TfrmBase.Button1Click(Sender: TObject);
var
  C: Cardinal;
  SDir: AnsiString;
  FName, ParamString, S: string;
begin
  if odRestore.Execute then
  begin
    FName := odRestore.FileName;
    SDir := ExtractFilePath(Application.exename);
    S := adConnection.Params.Values['Database'];
    ParamString := Format(' -uroot -hlocalhost -p$erver %s < %s',
      [S, FName]) + #0;
    C := ShellExecute(0, nil, pchar(Format('%smysqldump.exe', [SDir])),
      pwidechar(ParamString), nil, SW_HIDE);
    adConnection.Connected := False;
    adConnection.Connected := True;
  end;

end;
ShellExecute возвращает 42, какбудто всё отработало правильно
Dozent вне форума Ответить с цитированием
Старый 09.11.2013, 21:59   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Говорю-же: сделай батник, заодно и почитаешь ошибки дампера.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.11.2013, 22:01   #7
Dozent
Форумчанин
 
Регистрация: 21.05.2008
Сообщений: 495
По умолчанию

т.е. предлагаете делать рестор/бакап через батники?
Но и пароль там в батнике будет, мне не хочется этого
Dozent вне форума Ответить с цитированием
Старый 09.11.2013, 22:59   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Для проверки батник а не для эксплуатации.
Отработай на нем команду и возможные ошибки. Вдруг еще придется подключать пайпы, и получать ответ от дампера.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.11.2013, 23:23   #9
Dozent
Форумчанин
 
Регистрация: 21.05.2008
Сообщений: 495
По умолчанию

ну а чем мне батник поможет?) я просто не пойму этого
Dozent вне форума Ответить с цитированием
Старый 09.11.2013, 23:26   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ты пишешь что рестор не делается. Но ты не видишь ошибок, если бы ты запускал через CMD то ошибки вылезли на консоль, и можно было бы их почитать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Записать в память программы из файла дампа Night_Devil Общие вопросы Delphi 3 05.11.2012 15:03
Запись файла-дампа процесса в память InsteadOfMe Помощь студентам 8 05.04.2011 00:07
как написать кульк для дампа kpeoji Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 22.08.2010 17:35
Прошу проанализировать 2 дампа Altera Свободное общение 1 01.09.2009 19:11
Сохранение дампа памяти Polg Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 14 06.03.2008 08:44