1. 问题

image.png

升级到2.1.220220版本,由于旧版本在升级会备份数据库在导出时出现了字符类型问题,可通过手动方式升级或更改备份数据库的代码

2. 修改导出数据库文件的代码

找到 vendor\hkcms\cms-addons\src\addonsCloud.php\Cloud.php 文件。第978行,如下

foreach ($result as $row) {

    foreach($row as &$v){
        //将数据中的单引号转义,否则还原时会出错
        $v = addslashes($v);
    }

    $sql = "INSERT INTO `{$value['Name']}` VALUES ('" . implode("', '", $row) . "');\n";
    if (false === @fwrite($fp, $sql)) {
        return false;
    }
}

替换成

foreach ($result as $row) {

    foreach($row as &$v){
        //将数据中的单引号转义,否则还原时会出错
        if (is_null($v)) {
            $v = '--null--';
        } else if(is_string($v)) {
            $v = addslashes($v);
        }
    }

    $sql = "INSERT INTO `{$value['Name']}` VALUES ('" . str_replace(["\r","\n"],['\r','\n'],implode("', '", $row)) . "');\n";
    $sql = str_replace("'--null--'",'null', $sql);
    if (false === @fwrite($fp, $sql)) {
        return false;
    }
}

保存重新升级即可

3. 手动升级

官网下载文件进行覆盖(注意:不想覆盖默认模板,删除template/index文件夹后覆盖),然后下载数据库表文件运行:地址:https://www.hkcms.cn/index/index/uplogs.html?id=7


提示:在自动升级时,程序会提前备份数据库,备份项目,文件保存在:runtime\admin\backup 

虽然有备份功能,但还是建议您手动备份好数据。