Buenas he incorporado a mi aplicación web la capacidad de realizar backups y restaurarlas.
Para generar backups uso la clase dbutilities de codeigniter y para restaurar el siguiente codigo:
$this->load->helper('file');
$backup = read_file('./copias/mybackup.sql');
$sql_clean = '';
foreach (explode("\n", $backup) as $line){
if(isset($line[0]) && $line[0] != "#"){
$sql_clean .= $line."\n";
}
}
//echo $sql_clean;
foreach (explode(";\n", $sql_clean) as $sql){
$sql = trim($sql);
//echo $sql.'<br/>============<br/>';
if($sql)
{
$this->db->query($sql);
}
}
El caso es que cuando intento restaurar me lanza el siguiente error:
Ocurrió un error con la base de datos
Error Number: 1005
Can't create table 'prueba_restaurar.baldas' (errno: 150)
CREATE TABLE baldas
( id
int(11) NOT NULL AUTO_INCREMENT, nombre_balda
varchar(25) COLLATE utf8_spanish2_ci NOT NULL, edificio
int(11) NOT NULL, habitacion
int(11) NOT NULL, mueble
int(11) NOT NULL, PRIMARY KEY (id
), KEY edificio
(edificio
), KEY habitacion
(habitacion
), KEY mueble
(mueble
), CONSTRAINT baldas_ibfk_1
FOREIGN KEY (edificio
) REFERENCES edificios
(id
) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT baldas_ibfk_2
FOREIGN KEY (habitacion
) REFERENCES habitaciones
(id
) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT baldas_ibfk_3
FOREIGN KEY (mueble
) REFERENCES muebles
(id
) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_spanish2_ci
Filename: C:\xampp\htdocs\pfcdata\system\database\DB_driver.php
Line Number: 330
Espero ayuda, gracias!