0
phpMyAdmin可以用LONGBLOG數據成功恢復1.6MB轉儲文件。我試圖複製這個功能,但我的功能似乎並沒有工作。我收到分段錯誤錯誤,它似乎從不執行任何備份文件的代碼。 (但它確實會丟掉表格)通過文件上傳(Mysql)恢復1.6mb sql
我相信segfault是在執行preg_split時。
這裏是恢復例行:(這不LONGBLOB數據上的小文件的偉大工程)
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"));
}
}
我發送的文件是一個有效的SQL文件,將會添加驗證。 –
對不起。我的意思是檢查空字符串或空字符串。 –
即將添加到。儘管如此,我認爲它有點偏離主題。如何解析大文件而不導致分段錯誤? –