php备份sqlite3数据库问题
我正试图通过一个小php脚本备份一些sqlite3数据库。此脚本成功地将所有大小正确的文件输出到正确的位置。问题出现了(我今天在尝试将我的网站迁移到新位置时才意识到这一点),这些备份无法工作 当我使用phpLiteAdmin导入这些备份时,在“SQLite”附近会出现一个错误php备份sqlite3数据库问题,php,database,sqlite,Php,Database,Sqlite,我正试图通过一个小php脚本备份一些sqlite3数据库。此脚本成功地将所有大小正确的文件输出到正确的位置。问题出现了(我今天在尝试将我的网站迁移到新位置时才意识到这一点),这些备份无法工作 当我使用phpLiteAdmin导入这些备份时,在“SQLite”附近会出现一个错误:语法错误 如果我用notepad++打开这个文件,所有的数据都在那里。该文件以SQLite格式3开头,我认为这是问题的根源。但是,在备份副本上删除此选项并不能解决此问题 我尝试了许多不同的方法来备份数据库,都是使用PHP的
:语法错误
如果我用notepad++打开这个文件,所有的数据都在那里。该文件以SQLite格式3
开头,我认为这是问题的根源。但是,在备份副本上删除此选项并不能解决此问题
我尝试了许多不同的方法来备份数据库,都是使用PHP的exec()
命令来执行sqlite3代码
这是我当前的备份脚本。这基本上是在所有数据库中循环,并在backups
文件夹中使用时间戳将它们备份到自己的文件夹中。我正在使用sqlite3的.backup
,它输出文件,当前扩展名为.sql。我也尝试了.schema
和.dump
,但这两种方法都没有输出任何结果
我在这里完全不知所措,我很幸运,我仍然有原始数据库在tact中,但我需要能够自动备份这些数据库,以便在以后需要时进行恢复
<?
$today = date("m-d-Y");
$time = date("g:iA");
backup("db");
backup("development");
backup("inventory");
backup("permissions");
backup("reports");
backup("rollcall");
backup("upc");
$files = getDirContents('backups');
$start = "/home5/aspiretw/public_html/myticketroll/otherdb/modelfinder/pages/db/";
foreach($files as $value) {
$value = substr($value, strlen($start));
@$act = explode("_", $value);
@$act = explode("/", $act[0]);
if(strtotime("$act[2] 17:14:40") > strtotime('-7 days')) {
unlink($value);
}
}
function backup($db) {
global $today, $time;
$dir = "backups/$db/";
if (!is_dir($dir)) {
mkdir($dir, 0777, true);
}
$path = $dir.$today."_".$db."_".$time.".sql";
exec("sqlite3 '$db' '.backup '".$path."''");
}
function getDirContents($dir, &$results = array()){
$files = scandir($dir);
foreach($files as $key => $value){
$path = realpath($dir.DIRECTORY_SEPARATOR.$value);
if(!is_dir($path)) {
$results[] = $path;
} else if($value != "." && $value != "..") {
getDirContents($path, $results);
if(substr($path, -4) == ".bak") {
$results[] = $path;
}
}
}
return $results;
}
?>
命令.backup
仅复制数据库文件(同时正确处理事务隔离)
要恢复它,只需将其复制回来。.backup
命令只需复制数据库文件(同时正确处理事务隔离)
要恢复它,只需将其复制回来