Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Bases de datos > MySQL
Register FAQ Members List Calendar Guía de estilo Today's Posts

 
 
Thread Tools Search this Thread Display Modes
Prev Previous Post   Next Post Next
  #4  
Old 12/10/2010
RebeccaGL's Avatar
RebeccaGL RebeccaGL is offline
Miembro
 
Join Date: Jan 2008
Posts: 199
Poder: 19
RebeccaGL Va por buen camino
Este es el codigo de mi respaldo, lo uso tambien para conectarme.

Código Delphi [-]
procedure TForm_INIT.Init_MySQL_SERVER_READ;
var
  Init_MySQL: TIniFile;
begin
  // Init_PROGRAM_SYSTEM
  HALT_SYSTEM_PROGRAM := False;
  PROGRAM_Name := UpperCase(ExtractFileName(Application.ExeName));
  PROGRAM_Name := SYSTEM.Copy(PROGRAM_Name, 1, Length(PROGRAM_Name) - 4);
  Label_PROGRAM.Caption := 'Programa: ' + UpperCase(PROGRAM_Name);
  Exec_PATH_PRG := ExtractFilePath(Application.ExeName);
  Exec_PATH_PRG := Copy(Exec_PATH_PRG, 1, Length(Exec_PATH_PRG) - 1);

  // Init_Properties_FILENAMES
  dbf_PWDWIN := LowerCase(PROGRAM_Name) + '_db.pwdwin';
  dbf_PWDDDB := LowerCase(PROGRAM_Name) + '_db.pwdddb';
  dbf_PWDTAB := LowerCase(PROGRAM_Name) + '_db.pwdtab';
  dbf_PWDCAB := LowerCase(PROGRAM_Name) + '_db.pwdcab';

  // Init_Properties_CONNECTOR
  DB_Catalog := LowerCase(PROGRAM_Name) + '_db';
  DB_HostName := 'localhost';
  DB_Password := 'delphi';
  DB_Port := 3306;
  DB_Protocol := 'mysql-5';
  DB_User := LowerCase(PROGRAM_Name) + '_user';
  DB_Tag := 0;

  DB_Root := 'root';

  // Init_Properties_FILENAMES MySQL
  FILE_Backup := Exec_PATH_PRG + '\' + LowerCase(PROGRAM_Name) + '_backup.bat';
  FILE_Restore := Exec_PATH_PRG + '\' + LowerCase(PROGRAM_Name) + '_restore.bat';
  FILE_Data := Exec_PATH_PRG + '\' + LowerCase(PROGRAM_Name) + '_data.sql';

  // Semaphorize_SERVER
  if (MySQL_SERVER_INSTALLED) then
  begin
    // Disconnected DATABASE
    if (ZConnection_SERVER.Connected) then
    begin
      CONNECTION_Server := False;
      ZConnection_SERVER.Connected := False;
      Label_CONECCION_STATUS.Caption := 'Conectado: NO';
      Label_STATUSBAR_PWD.Caption := '';
    end;

    // CREATE >> INI File
    if (not (FileExists(Exec_PATH_PRG + '\' + UpperCase(PROGRAM_Name) + '.INI'))) then
    begin
      // Write_INI
      Init_MySQL := TIniFile.Create(ChangeFileExt(Application.ExeName, '.INI'));
      try
        Init_MySQL.WriteString('MySQL', 'Catalog', DB_Catalog);
        Init_MySQL.WriteString('MySQL', 'HostName', DB_HostName);
        Init_MySQL.WriteString('MySQL', 'Password', DB_Password);
        Init_MySQL.WriteInteger('MySQL', 'Port', DB_Port);
        Init_MySQL.WriteString('MySQL', 'Protocol', DB_Protocol);
        Init_MySQL.WriteString('MySQL', 'User', DB_User);
        Init_MySQL.WriteInteger('MySQL', 'Tag', DB_Tag);
      finally
        Init_MySQL.Free;
      end;
    end;

    // Verify Status DATABASE and TABLES
    Init_MySQL := TIniFile.Create(ChangeFileExt(Application.ExeName, '.INI'));
    try
      ZConnection_SERVER.Tag := Init_MySQL.ReadInteger('MySQL', 'Tag', 0);
    finally
      Init_MySQL.Free;
    end;
    Edit_CONECCION.Text := ZConnection_SERVER.HostName;

    // Database and Tables Found in MySQL Server
    if (ZConnection_SERVER.Tag = 1) then
    begin
      // Connection To Server MySQL
      try
        CONNECTION_Server := True;
        ZConnection_SERVER.Connected := True;
        Label_CONECCION_STATUS.Caption := 'Conectado: SI';
        Label_STATUSBAR_PWD.Caption := 'Conección al Servidor MySQL OK';
      except
        CONNECTION_Server := False;
        ZConnection_SERVER.Connected := False;
        Label_CONECCION_STATUS.Caption := 'Conectado: NO';
        Label_STATUSBAR_PWD.Caption := 'Error: No se puede conectar';
      end;
      Exit;
    end;

    // Read_INI
    Init_MySQL := TIniFile.Create(ChangeFileExt(Application.ExeName, '.INI'));
    try
      // Connection_MySQL Defaul
      ZConnection_SERVER.Catalog := str_NULL;
      ZConnection_SERVER.HostName := DB_HostName;
      ZConnection_SERVER.Password := str_NULL;
      ZConnection_SERVER.Port := DB_Port;
      ZConnection_SERVER.Protocol := DB_Protocol;
      ZConnection_SERVER.User := DB_Root;
      ZConnection_SERVER.Tag := DB_Tag;
      ZConnection_SERVER.Connected := True;

      (*
      // Esto lo puse como comentario porque por esto me salia el error >> 
      // "cant find any matching row in the user table"
      // CREATE >> Root locahost
      ZQuery_DATA.SQL.Clear;
      ZQuery_DATA.SQL.Add('GRANT ALL PRIVILEGES ON *.* TO "root"@"localhost" IDENTIFIED BY "" WITH GRANT OPTION;');
      ZQuery_DATA.ExecSQL;

      // CREATE >> Root All PC's
      ZQuery_DATA.SQL.Clear;
      ZQuery_DATA.SQL.Add('GRANT ALL PRIVILEGES ON *.* TO "root"@"%" IDENTIFIED BY "" WITH GRANT OPTION;');
      ZQuery_DATA.ExecSQL;
      *)
      
      // CREATE >> user locahost
      SQL_CodeMaster := 'GRANT ALL PRIVILEGES ON *.* TO '
                        + '"' + DB_User + '"' + '@' + '"' + DB_HostName + '"'
                        + ' IDENTIFIED BY ' + '"' + DB_Password + '"'
                        + ' WITH GRANT OPTION;';
      ZQuery_DATA.SQL.Clear;
      ZQuery_DATA.SQL.Add(SQL_CodeMaster);
      ZQuery_DATA.ExecSQL;

      // CREATE >> user All PC's
      SQL_CodeMaster := 'GRANT ALL PRIVILEGES ON *.* TO '
                        + '"' + DB_User + '"' + '@' + '"' + '%' + '"'
                        + ' IDENTIFIED BY ' + '"' + DB_Password + '"'
                        + ' WITH GRANT OPTION;';
      ZQuery_DATA.SQL.Clear;
      ZQuery_DATA.SQL.Add(SQL_CodeMaster);
      ZQuery_DATA.ExecSQL;

      // Flush_Privileges
      ZQuery_DATA.SQL.Clear;
      ZQuery_DATA.SQL.Add('FLUSH PRIVILEGES;');
      ZQuery_DATA.ExecSQL;

      // Create_DATABASE
      ZQuery_DATA.SQL.Clear;
      ZQuery_DATA.SQL.Add('CREATE DATABASE IF NOT EXISTS ' + DB_Catalog);
      ZQuery_DATA.ExecSQL;

      // Connection_MySQL Program
      ZConnection_SERVER.Connected := False;
      ZConnection_SERVER.Catalog := Init_MySQL.ReadString('MySQL', 'Catalog', str_NULL);
      ZConnection_SERVER.HostName := Init_MySQL.ReadString('MySQL', 'HostName', str_NULL);
      ZConnection_SERVER.Password := Init_MySQL.ReadString('MySQL', 'Password', str_NULL);
      ZConnection_SERVER.Port := Init_MySQL.ReadInteger('MySQL', 'Port', val_ZERO);
      ZConnection_SERVER.Protocol := Init_MySQL.ReadString('MySQL', 'Protocol', str_NULL);
      ZConnection_SERVER.User := Init_MySQL.ReadString('MySQL', 'User', str_NULL);
      ZConnection_SERVER.Tag := Init_MySQL.ReadInteger('MySQL', 'Tag', val_ZERO);
      Edit_CONECCION.Text := ZConnection_SERVER.HostName;

     // Init BACKUP
      BACKUP_path := REGISTRY_LoadData(HKEY_LOCAL_MACHINE, '\Software\MySQL AB\MySQL Server 5.1\', 'DataLocation')
      + 'bin\mysqldump.exe';
      BACKUP_str := 'cmd /c ' + '"' + BACKUP_path + '"' + ' '
                    + '-h ' + ZConnection_SERVER.HostName + ' '
                    + '-u ' + ZConnection_SERVER.User + ' '
                    + '-p'  + ZConnection_SERVER.Password + ' '
                    + DB_Catalog + ' > '
                    + '"' + FILE_Data + '"';

      // Init RESTORE
      RESTORE_path := REGISTRY_LoadData(HKEY_LOCAL_MACHINE, '\Software\MySQL AB\MySQL Server 5.1\', 'DataLocation')
      + 'bin\mysql.exe';
      RESTORE_str := 'cmd /c ' + '"' + RESTORE_path + '"' + ' '
                    + '-h ' + ZConnection_SERVER.HostName + ' '
                    + '-u ' + ZConnection_SERVER.User + ' '
                    + '-p'  + ZConnection_SERVER.Password + ' '
                    + DB_Catalog + ' < '
                    + '"' + FILE_Data + '"';

      // Create_FILE Backup.bat
      AssignFile(File_, FILE_Backup);
      Rewrite(File_);
      WriteLn(File_, BACKUP_str);
      CloseFile(File_);

      // Create_FILE Restore.bat
      AssignFile(File_, FILE_Restore);
      Rewrite(File_);
      WriteLn(File_, RESTORE_str);
      CloseFile(File_);

      // Backup_DATABASE
      // WinExec(PChar(FILE_Backup), 0);

      // Restore_DATABASE
      if (ZConnection_SERVER.Tag = 0) then
      begin
        WinExec(PChar(FILE_Restore), 0);
        ZConnection_SERVER.Tag := 1;
        Init_MySQL.WriteString('MySQL', 'Catalog', ZConnection_SERVER.Catalog);
        Init_MySQL.WriteString('MySQL', 'HostName', ZConnection_SERVER.HostName);
        Init_MySQL.WriteString('MySQL', 'Password', ZConnection_SERVER.Password);
        Init_MySQL.WriteInteger('MySQL', 'Port', ZConnection_SERVER.Port);
        Init_MySQL.WriteString('MySQL', 'Protocol', ZConnection_SERVER.Protocol);
        Init_MySQL.WriteString('MySQL', 'User', ZConnection_SERVER.User);
        Init_MySQL.WriteInteger('MySQL', 'Tag', ZConnection_SERVER.Tag);
      end;
    finally
      Init_MySQL.Free;
    end;

    // Connection To Server MySQL
    try
      CONNECTION_Server := True;
      ZConnection_SERVER.Connected := True;
      Label_CONECCION_STATUS.Caption := 'Conectado: SI';
      Label_STATUSBAR_PWD.Caption := 'Conección al Servidor MySQL OK';
    except
      CONNECTION_Server := False;
      ZConnection_SERVER.Connected := False;
      Label_CONECCION_STATUS.Caption := 'Conectado: NO';
      Label_STATUSBAR_PWD.Caption := 'Error: No se puede conectar';
    end;
  end;
end;


A lo que me refiero es al respaldo que hago aca en mi programa, no lo reconoce el MySQL administrator.
Se entiende o no??.

Este es el contenido que genero en el archivo ecam_backup.bat

cmd /c "C:\Pascal\MySQL\MySQL Server 5.1\bin\mysqldump.exe" -h localhost -u ecam_user -pdelphi ecam_db > "C:\Pascal\Libprj\Ecam MySQL\System\ecam_data.sql"

Y este el contenido que genero en el archivo ecam_restore.bat

cmd /c "C:\Pascal\MySQL\MySQL Server 5.1\bin\mysql.exe" -h localhost -u ecam_user -pdelphi ecam_db < "C:\Pascal\Libprj\Ecam MySQL\System\ecam_data.sql"

Cuando ejecuto el archivo ecam_restore.bat restaura la base de datos, pero si habro el archivo ecam_data.sql el que contine la base de datos, desde el MySQL administrador este no lo reconoce como valido y no lo restaura, a eso me refiero no hay compatibilidad entre la forma en que creo mi respaldo y como lo crea el administrador MySQL. ¿Como podria resolver este percance??.



Este codigo le servira a muchos.


Saludos

Last edited by RebeccaGL : 12/10/2010 at 15:50.
Reply With Quote
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
mysqldump y mysql.exe astarothls Conexión con bases de datos 0 30/12/2008 22:26
Ayuda con Mysqldump citlalliDgp Varios 3 19/01/2008 00:43
Detalle con el mysqldump Ken_Masters MySQL 2 30/07/2007 02:20
Mysqldump y respaldos Ken_Masters MySQL 1 27/07/2007 21:39
problema con mysqldump ercrizeporta Conexión con bases de datos 1 28/05/2007 14:57


All times are GMT +2. The time now is 01:52.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi