Skip to content

helpManual mysqlUpdate

tolizhan edited this page Apr 27, 2023 · 3 revisions

数据库升级

功能描述

  1. 提供mysql数据和结构的备份恢复及升级功能
  2. 兼容 mysql 5.0+
  3. 无法处理'表'与'字段'的更名,会按删除旧名,添加新名处理

内置方法

  • of_base_tool_mysqlSync::init($config) 初始化成功返回true,否则false
    configarray
    config : 配置参数 {
        'adjustSqlParam' : 作为callAdjustSql的第三个参数,默认null
        'callAdjustSql'  : 每从文件中提取一条sql,便调用此函数,默认null
        'callDb'         : 执行sql语句,执行成功返回二维数据(ASSOC方式查询:SELECT, SHOW)或true,失败返回false,is_callable格式, 符合回调格式 或 连接配置文件 {
            'server'   : mysql_connect 的 server 参数
            'username' : mysql_connect 的 username 参数
            'password' : mysql_connect 的 password 参数
            'database' : 默认数据库,of_base_tool_mysqlSync:init时选填,与config['database']互补
            'charset'  : 默认字符集,of_base_tool_mysqlSync:init时选填,与config['charset']互补
        }
        'callMsg'        : 当发生一些消息时会调用这个函数,默认null
        'charset'        : 指定字符集和对照,默认['utf8', 'utf8_general_ci']
        'database'       : 指定数据库,默认尝试从数据库获取
        'dbVersion'      : 数据库版本'大版本号两位中版本号两位小版本号',会从数据库获取
        'prefix'         : 更新程序使用表的前缀,默认'__'
        'sqlSplit'       : sql语句分隔符,默认';'
        'sqlMark'        : sql标记,将关键位置加上特殊注释,方便callAdjustSql调用时定位, true=加标记,默认false {
            "/*`N:T'*\/" : 标志前面是表名,T 可以是['T'(TABLE), 'V'(VIEW), 'P'(PROCEDURE), 'F'(FUNCTION)]之一
        }
        'checkRole'      : 检查角色所有权限, 数字(默认)=检查, false=不检查
        'matches'        : 备份不同匹配数据类型的更新项,默认全匹配 {
            'table'      : 表   null(默认)=全匹配,false=禁止备份,数组=按规则过滤{
                'include' : 一个包含的正则数组, 
                'exclude' : 一个排除的正则数组(优先级别高)
            },
            'view'       : 视图 同上,默认=false
            'procedure'  : 过程 同上,默认=false
            'function'   : 函数 同上,默认=false
        }
    }
    <?php
    //初始化配置
    $temp = of_base_tool_mysqlSync::init(array(
        //SQL 执行方法
        'callDb'    => 'L::sql',
        //不校验权限
        'checkRole' => false,
        //全库匹配
        'matches'   => array(
            //匹配表
            'table'     => null,
            //匹配视图
            'view'      => null,
            //匹配过程
            'procedure' => null,
            //匹配函数
            'function'  => null,
        )
    ));
    

    //初始化成功 if ($temp) {     //备份为表语句     of_base_tool_mysqlSync::backupTable(ROOT_DIR . '/table.sql');     //删除就结构, 恢复表语句     of_base_tool_mysqlSync::revertTable(ROOT_DIR . '/table.sql'); }

  • of_base_tool_mysqlSync::sql($sql) 执行sql语句, 成功返回二维数据(ASSOC方式查询:SELECT, SHOW, EXPLAIN, DESCRIBE)或true,失败返回false
    sqlstring
    一条sql语句
  • of_base_tool_mysqlSync::fetchFileSql($file = null) 从文件中提取一条sql语句
    sqlstring, null
    字符串=打开一个新的文件流,成功返回true,失败false
    null =依次提取下一条sql语句,失败或结束返回null
    if( of_base_tool_mysqlSync::fetchFileSql(ROOT_DIR . '/structure.sql') === true )
    {
        while( ($temp = of_base_tool_mysqlSync::fetchFileSql()) !== null ) {
            echo $temp, "<br>\n";
        }
        echo '输出结束';
    }
  • of_base_tool_mysqlSync::backupData($file, $config = array()) 备份表数据到指定文件
    filestring
    指定备份全路径
    configarray
    备份配置{
        type : 导出类型('INSERT', 'REPLACE':默认, 数组:修复模式{表名:[限制字段, ...], ..})之一,使用'INSERT'加入 DELETE FROM xxx 清空表
        count : 扩展数量,默认200
    }
    of_base_tool_mysqlSync::backupData(ROOT_DIR . '/demo.sql', array('type' => 'INSERT'));     //恢复时完全替换
    of_base_tool_mysqlSync::backupData(ROOT_DIR . '/demo.sql', array('type' => 'REPLACE'));    //恢复时替换对于的ID数据
    of_base_tool_mysqlSync::backupData(ROOT_DIR . '/demo.sql', array('type' => array(          //修复模式,不在限制内的表按REPLACE处理
        'tableName' => array('p_cde', 'c_cde')                                                 //限制表名 => 包含的值不存在时插入数据
    ));
  • of_base_tool_mysqlSync::backupBase($file, $config = array()) 备份表结构到指定文件
    filestring
    指定备份全路径
    configarray
    备份配置{
        count : 扩展数量,默认200
    }
    of_base_tool_mysqlSync::backupBase(ROOT_DIR . '/structure.sql');
  • of_base_tool_mysqlSync::backupTable($file) 备份表语句,成功返回true,失败返回false
    filestring
    指定备份的文件全路径
    of_base_tool_mysqlSync::backupTable(ROOT_DIR . '/table.sql');
  • of_base_tool_mysqlSync::revertData($file, $config = array()) 更新备份数据,成功返回true,失败返回false
    filestring
    指定解析的文件全路径
    configarray
    导入配置{
        disableTriggers : 禁用触发器,默认false不禁用
        showProgress : 显示进度,默认true显示
    }
    of_base_tool_mysqlSync::revertData(ROOT_DIR . '/demo.sql', array(    //导入演示数据
        'disableTriggers' => true,                                       //关闭触发器
        'showProgress'    => true                                        //显示进度
    ));
  • of_base_tool_mysqlSync::revertBase($file, $config = array()) 更新备份结构,成功返回true,失败返回false
    filestring
    指定解析的文件全路径
    configarray
    更新配置{
        setInc : false(默认)=不操作增量, true=设置增量(AUTO_INCREMENT)
    }
    of_base_tool_mysqlSync::revertBase(ROOT_DIR . '/structure.sql');
  • of_base_tool_mysqlSync::revertTable($file) 恢复表语句,成功返回true,失败返回false
    filestring
    指定解析的文件全路径
    //恢复SQL语句 该操作会删除对应表数据
    of_base_tool_mysqlSync::revertTable(ROOT_DIR . '/table.sql');
Clone this wiki locally