Mysql yedekleme yaparken Hata

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
cvheneburi
Üye
Mesajlar: 95
Kayıt: 07 Eki 2010 03:55

Mysql yedekleme yaparken Hata

Mesaj gönderen cvheneburi »

arkadaşlar merhaba, mysql veritabanında aşağıdaki kodlar ile yedekleme yaparken iki farklı hata alıyorum
yedekleme kodu

Kod: Tümünü seç

procedure TForm1.Button2Click(Sender: TObject);
var
  dosyasay: integer;
  sonuc : TSearchRec;
  tablolar: string;
begin
  dg_kapa.FileName := copy(DateToStr(now),1,2)+'-'+copy(DateToStr(now),4,2)+'-'+copy(DateToStr(now),7,4)+'_'+copy(timeToStr(now),1,2)+'-'+copy(timeToStr(now),4,2)+'-'+copy(timeToStr(now),7,4)+'_dershane';
  dosyasec := false;
  dg_kapa.Execute;
  if dosyasec=false then exit;
  try
    mkdir(extractfilepath(application.exename)+'\Yedek');
  except
    dosyasay := FindFirst(extractfilepath(application.exename)+'\Yedek\*.*', faAnyFile - faDirectory, sonuc);
    while dosyasay = 0 do
    begin
      deletefile(extractfilepath(application.exename)+'\Yedek\'+sonuc.Name);
      dosyasay := FindNext(sonuc);
    end;
    FindClose(sonuc);
  end;
  tablo_oku.Close;
  tablo_oku.SQL.Clear;
  tablo_oku.SQL.Add('show tables FROM isletme');
  tablo_oku.Open;
  tablolar:=  tablo_oku.Fields[0].Text;
  tablo_oku.Next;
  while tablo_oku.Eof = false do
  begin
    tablolar:=tablolar+','+tablo_oku.Fields[0].Text;
    tablo_oku.Next;
  end;
  tablo_oku.Close;
  tablo_oku.SQL.Clear;
  tablo_oku.SQL.Add('backup table belge to '''+stringreplace(extractfilepath(application.exename),'\','/',[rfReplaceAll])+'Yedek''');
  tablo_oku.ExecSQL;
  zip_kapa.FileName := dg_kapa.FileName;
//  dosyasay := FindFirst(extractfilepath(application.exename)+'\Yedek\*.*', faAnyFile - faDirectory, sonuc);
//  while dosyasay = 0 do
//  begin
//    zip_kapa.AddFiles(extractfilepath(application.exename)+'\Yedek\'+sonuc.Name,0);
//    dosyasay := FindNext(sonuc);
//  end;
//  FindClose(sonuc);
  zip_kapa.AddFiles(extractfilepath(application.exename)+'\Yedek\*.*',0);
//Geçici dosyaları sil
  dosyasay := FindFirst(extractfilepath(application.exename)+'\Yedek\*.*', faAnyFile - faDirectory, sonuc);
  while dosyasay = 0 do
  begin
    deletefile(extractfilepath(application.exename)+'\Yedek\'+sonuc.Name);
    dosyasay := FindNext(sonuc);
  end;
  FindClose(sonuc);
  rmdir(extractfilepath(application.exename)+'\Yedek');
//--
  tablo_oku.Close;
  tablo_oku.SQL.Clear;
  tablo_oku.SQL.Add('update ayarlar set yedek_tarih="'+DateToStr(now())+'"');
  tablo_oku.ExecSQL;
  zip_kapa.CloseArchive;
  messagedlg('Dershane için yedek alma işlemi başarıyla tamamlandı.', mtInformation ,[mbOK], 0);
end;
yedek adlı klasör daha önceden var ise şu hatayı veriyor
Resim
devam ettiğimde ise bu hatayı veriyor
Resim
sorun neden kaynaklanıyor acaba yardımcı olabiir misiniz...
Dosya ekleri
hata 2
hata 2
hata 2.jpg (5.88 KiB) 1598 kere görüntülendi
hata 1
hata 1
hata 1.jpg (4.95 KiB) 1598 kere görüntülendi
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: Mysql yedekleme yaparken Hata

Mesaj gönderen csunguray »

Büyük ihtimalle hata MySql servisinin o klasöre yazma yetkisi olmamasından kaynaklanıyordur. Yedek almak istediğiniz klasörü sağ tıklayıp Özellikler i seçin. Güvenlik sekmesinden Everyone kullanıcısına Tam denetim yetkisi verin.
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
cvheneburi
Üye
Mesajlar: 95
Kayıt: 07 Eki 2010 03:55

Re: Mysql yedekleme yaparken Hata

Mesaj gönderen cvheneburi »

hocam izin konusunda sıkıntı yok izinler tam yetkili zaten
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: Mysql yedekleme yaparken Hata

Mesaj gönderen brs »

Kod: Tümünü seç

procedure TForm8.CopyFiles(Source, Destination: String);
var
  I: Integer;
  FromF, ToF: File of Byte;
  Buffer: Array [0 .. 4096] of Char;
  NumRead: integer;
  FileLength: longint;
begin
  YedekleTimer.Enabled := True;
  AssignFile(FromF, Source);
  Reset(FromF);
  AssignFile(ToF, Destination);
  Rewrite(ToF);
  FileLength := FileSize(FromF);
  with ProgressBar1 do
  begin
    Visible := True;
    Min := 0;
    Max := FileLength;
    while FileLength > 0 do
    begin
      BlockRead(FromF, Buffer[0], SizeOf(Buffer), NumRead);
      FileLength := FileLength - NumRead;
      BlockWrite(ToF, Buffer[0], NumRead);
      Position := Position + NumRead;
    end;
    CloseFile(FromF);
    CloseFile(ToF);
    PlaylistYedekButton.Caption := 'Bekleyiniz...';
  end;
end;

Kod: Tümünü seç

procedure TForm8.PlaylistYedekButtonClick(Sender: TObject);
var
  Cevap: Word;
  Copy, Paste, Tarih: String;
begin
  Cevap := Application.MessageBox
    ('Yedekleme işlemi veri çokluğuna göre birkaç dakika sürebilir!', 'Onay!',
    MB_YesNo or MB_ICONQUESTION);
  begin
    try
      if Cevap = MrYes then
      begin
        Tarih := FormatDateTime('ddmmyyyy hhnnss', Now);
        Copy := DBKlasor + '\PlaylistDB.db';
        Paste := BackupDB + '\' + Tarih + ' PlaylistDB.db';
        CopyFiles(Copy, Paste);
      end;
    except
    end;
  end;
end;

Kod: Tümünü seç

procedure TForm8.YedekleTimerTimer(Sender: TObject);
begin
  try
    if PlaylistYedekButton.Caption = 'Bekleyiniz...' then
    begin
      PlaylistYedekButton.Caption := 'Playlist';
    end
    else
    begin
      if ProgramYedekButton.Caption = 'Bekleyiniz...' then
      begin
        ProgramYedekButton.Caption := 'Program';
      end;
    end;
  finally
    ProgressBar1.Position := 0;
    ProgressBar1.Visible := False;
    YedekleTimer.Enabled := False;
  end;
end;
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
cvheneburi
Üye
Mesajlar: 95
Kayıt: 07 Eki 2010 03:55

Re: Mysql yedekleme yaparken Hata

Mesaj gönderen cvheneburi »

hocam ilginize teşekkür ederim yalnız siz sanırım firebird veritabanı kullanıyorsunuz bu yedeklemeyi yaparken. ben mysql veritabanı kullanıyorum
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: Mysql yedekleme yaparken Hata

Mesaj gönderen brs »

Sqlite kullanıyorum...
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Cevapla