php备份sqlite3数据库问题

php备份sqlite3数据库问题,php,database,sqlite,Php,Database,Sqlite,我正试图通过一个小php脚本备份一些sqlite3数据库。此脚本成功地将所有大小正确的文件输出到正确的位置。问题出现了(我今天在尝试将我的网站迁移到新位置时才意识到这一点),这些备份无法工作 当我使用phpLiteAdmin导入这些备份时,在“SQLite”附近会出现一个错误:语法错误 如果我用notepad++打开这个文件,所有的数据都在那里。该文件以SQLite格式3开头,我认为这是问题的根源。但是,在备份副本上删除此选项并不能解决此问题 我尝试了许多不同的方法来备份数据库,都是使用PHP的

我正试图通过一个小php脚本备份一些sqlite3数据库。此脚本成功地将所有大小正确的文件输出到正确的位置。问题出现了(我今天在尝试将我的网站迁移到新位置时才意识到这一点),这些备份无法工作

当我使用phpLiteAdmin导入这些备份时,在“SQLite”附近会出现一个错误
:语法错误

如果我用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
命令只需复制数据库文件(同时正确处理事务隔离)

要恢复它,只需将其复制回来