Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-11-2011
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
Copia de seguridad Firebird desde PHP

Hola.

Alguno a tenido la oportunidad de realizar copia de seguridad de una base de datos en firebird desde php, he recurrido al manual de php pero el codigo que muestra no funciona:

Código PHP:
$resource_service_handle ibase_service_attach ('localhost''username''password');

ibase_backup($resource_service_handle'source_database''destination_file');

ibase_service_detach ($resource_service_handle); 
Y lo he cambiado por:

Código PHP:
$resource_service_handle ibase_service_attach (DB_NAMEDB_USERNAMEDB_PASSWORD) or die(ibase_errmsg());

    
ibase_backup($resource_service_handleDB_NAMEPATH_BK.SD."copia_.fbk") or die(ibase_errmsg());

    
ibase_service_detach ($resource_service_handle); 
Donde las constantes estan definidas y funcionan (dan acceso a la aplicacion). El error que me retorna es

localhost:/opt/lampp/htdocs/aplicacion_local/bd/basedatos.fdb
SYSDBA
masterkey
localhost:/opt/lampp/htdocs/aplicacion_local/bakups/copia_.fbk

Warning: ibase_service_attach() [function.ibase-service-attach]: Cannot attach to services manager service opt/lampp/htdocs/aplicacion_local/bd/basedatos.fdb:service_mgr is not defined in /opt/lampp/htdocs/aplicacion_local/controllers/backup.php on line 9

Warning: ibase_backup() expects parameter 1 to be resource, boolean given in /opt/lampp/htdocs/aplicacion_local/controllers/backup.php on line 11

Warning: ibase_service_detach() expects parameter 1 to be resource, boolean given in /opt/lampp/htdocs/aplicacion_local/controllers/backup.php on line 13

De antemano muchas gracias!
Responder Con Cita
  #2  
Antiguo 02-11-2011
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Primero y principal: No se casi nada de PHP.

Veo que tu defines:
localhost:/opt/lampp/htdocs/aplicacion_local/bd/basedatos.fdb
y el error dice que no se puede conectar a:
opt/lampp/htdocs/aplicacion_local/bd/basedatos.fdb

Comprueba que las variables que tienes llegan a la función con los valores correctos.
Supongo que podrás poner algo asi como un ShowMessage(DB_NAME) antes de la función.
Responder Con Cita
  #3  
Antiguo 02-11-2011
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
Gracias por su respuesta, enseguida voy a revisar, y comento como fue
Responder Con Cita
  #4  
Antiguo 02-11-2011
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
bueno probe algo mas

Código PHP:
if (($service ibase_service_attach(DB_SERVERDB_USERNAMEDB_PASSWORD)) != FALSE) {
        
//retrieve server info
        
$server_info  ibase_server_info($serviceIBASE_SVC_SERVER_VERSION)
                      . 
' / '
                      
ibase_server_info($serviceIBASE_SVC_IMPLEMENTATION);
        
        
ibase_backup($serviceDB_NAMEDB_SERVER.":".PATH_BK.SD."basededatos_.fbk") or die(ibase_errmsg());
        
        
//detach from server (disconnect)
        
ibase_service_detach($service);
    }
    else {
        
$ib_error ibase_errmsg();
    }
    
    echo 
$server_info
Donde:

DB_NAME : localhost:/opt/lampp/htdocs/aplicacion/bd/basededatos.fdb
DB_USERNAME : SYSDBA
DB_PASSWORD : masterkey
PATH_BK : /opt/lampp/htdocs/aplicacion/bakups
DB_SERVER : localhost:/opt/lampp/htdocs/aplicacion/bakups/basededatos_.fbk

la cuestion es que no me genera error como tampoco crea el archivo de la copia de seguridad.

Agradezco la ayuda que me puedan brindar
Responder Con Cita
  #5  
Antiguo 02-11-2011
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Cita:
ibase_backup($service, DB_NAME, DB_SERVER.":".PATH_BK.SD."basededatos_.fbk") or die(ibase_errmsg());
En esta línea veo algo raro:

Se llama a la función ibase_backup y supongo que le pasas el parámetro origen y destino.

Origen = DB_NAME = localhost:/opt/lampp/htdocs/aplicacion/bd/basededatos.fdb: ok
Destino = DB_SERVER.":".PATH_BK.SD."basededatos_.fbk" = localhost:/opt/lampp/htdocs/aplicacion/bakups/basededatos_.fbk:/opt/lampp/htdocs/aplicacion/bakups.basededatos_.fbk: ERROR

Además, el backup siempre se hace a un disco local.
Cuando la haces con la línea de comando es
Código:
origen = IP:Path/nombre_db
destino = Path/nombre_bk
gbak -t origen destino
Ejemplo:
gbak -t 192.168.1.1:/bases/base.fdb C:\Backups\Backup.FBK
Si quieres que el backup esté en otro lugar, deberás hacerlo al disco local y luego copiarlo
Código:
gbak -t 192.168.1.1:/bases/base.fdb C:\Backups\Backup.FBK
copy C:\Backups\Backup.FBK \\ServidorBackup\Backups\Backup.FBK
Responder Con Cita
  #6  
Antiguo 02-11-2011
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
ok, voy a revisar esto ultimo, realmente agradezco tu interes en ayudarme.
Responder Con Cita
  #7  
Antiguo 03-11-2011
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
Gacias, hice los cambios sugeridos y quedo algo asi:

$service = ibase_service_attach(localhost,SYSDBA,masterkey);
ibase_backup($service, localhost:/opt/lampp/htdocs/smi_local/bd/basededatos.fdb, localhost:/opt/lampp/htdocs/smi_local/backups/basededatos_.fbk);

se ejectua pero no me muestra ni erros ni crea el archivo del respaldo. Que mas puedo hacer
Responder Con Cita
  #8  
Antiguo 03-11-2011
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Lo dicho antes: el backup siempre se hace a un disco local

La parte subrayada no es válida.
ibase_backup($service, localhost:/opt/lampp/htdocs/smi_local/bd/basededatos.fdb, localhost:/opt/lampp/htdocs/smi_local/backups/basededatos_.fbk);

Suponiendo
  • que la dirección de la base origen es correcta
  • que el php está en el mismo servidor que la base (localhost)
  • que tiene derechos de escritura a la carpeta /opt/lampp/htdocs/smi_local/backups/
Quedaría así:

ibase_backup($service, localhost:/opt/lampp/htdocs/smi_local/bd/basededatos.fdb, /opt/lampp/htdocs/smi_local/backups/basededatos_.fbk);
Responder Con Cita
  #9  
Antiguo 04-11-2011
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
Siguiendo las recomendaciones comprombe que:

La base origen es correcta
Php está en el mismo servidor que la base (localhost)
Tiene derechos de escritura a la carpeta /opt/lampp/htdocs/smi_local/backups/

y cambie la ruta tal como me propones pero lo mas raro es que sigue sin generar el archivo resultado.... y lo mas enigmatico es que ningun error.

De todas formas agradezco tu paciencia. sin embargo he seguido consultando pero no he encontrado nada parecido. Sigo tratando
Responder Con Cita
  #10  
Antiguo 10-11-2011
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
Hasta el momento no he podido lograr generar la copia de seguridad desde php utilizando la funcion ibase_backup, por lo que estoy pensando mejor realizar un ejecutable para copias de seguridad de mi base de datos.

Antes de finalizar quiero agradecer enormente a duilioisola, por su paciencia y por tomar un poco de su tiempo en ayudarme con ideas.
Responder Con Cita
  #11  
Antiguo 11-11-2011
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Cita:
ibase_backup($service, DB_NAME, DB_SERVER.":".PATH_BK.SD."basededatos_.fbk") or die(ibase_errmsg());
No se que es la parte "or die(ibase_errmsg());", pero leí que envía un mensaje y sale del script.

Las expresiones lógicas se suelen evaluar solo la parte necesaria. Si la primera parte de una expresión con or es verdadera, el resultado es verdadero, por lo que no se evalúa la siguiente. Si la primera es falsa, se evalúa la siguiente.

Dicho esto, puede que ibase_backup() falle y por lo tanto se llame a die(...) y cierre el script.

Quita esto y deja que salga una exception o el tipo de error que te envíe PHP.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
¿Copia de seguridad de BD SQL 2000 desde la aplicación? Blaster Conexión con bases de datos 2 02-01-2009 22:19:02
realizar copia de seguridad de bd interbase desde delphi ingabraham Firebird e Interbase 8 16-10-2007 18:02:01
Copia de Seguridad omarifr Windows 4 07-01-2006 21:22:15
Copia de tablas como copia de seguridad Mathom Varios 4 04-01-2006 09:19:57
Copia de seguridad y restablecer copia en paradox Sayuri Conexión con bases de datos 4 30-08-2005 17:08:37


La franja horaria es GMT +2. Ahora son las 01:23:15.


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