phpMyAdmin 可以成功恢复一个包含 LONGBLOG 数据的 1.6MB 转储文件。我正在尝试复制此功能,但我的功能似乎不起作用。我收到一个分段错误错误,它似乎永远不会执行任何备份文件的代码。(但它确实删除了表)
我相信段错误是在进行 preg_split 时。
这是恢复的例程:(这对没有 LONGBLOB DATA 的小文件非常有效)
function do_restore()
{
$password=$this->input->post('password');
if(!$this->Employee->authentication_check($password))
{
echo json_encode(array('success'=>false,'message'=>"failure"));
exit();
}
else
{
$sq=file_get_contents($_FILES["file"]["tmp_name"]);
$this->db->trans_start();
$this->db->query('SET foreign_key_checks = 0');
$tables = $this->db->list_tables();
foreach ($tables as $table)
{
$this->db->query('drop table '.$table);
}
$this->db->query('SET foreign_key_checks = 1');
$queries = preg_split("/;+(?=([^'|^\\\']*['|\\\'][^'|^\\\']*['|\\\'])*[^'|^\\\']*[^'|^\\\']$)/", $sq);
foreach ($queries as $query)
{
if($query)
{
$this->db->query($query);
}
}
$this->db->trans_complete();
echo json_encode(array('success'=>true,'message'=>"success"));
}
}