xiaoCMS中sqllite转成mysql

来源:互联网 发布:腾讯企业邮箱域名续费 编辑:程序博客网 时间:2024/04/29 09:52

将sqllite版的框架转换成mysql版本

在xiaoCMS官网http://www.xiaocms.com/x1/中的后台框架中,有这几个版本:
这里写图片描述

其中mysql版的数据库使用mysql,支持大型数据处理;而sqllite版的数据库文件只支持很小的数据处理,一般正式的网站都是不允许使用sqllite的,以避免日后数据量增加带来的困扰。如果自己一不小心下载到了sqllite版,也没有关系,因为mysql和sqllite版数据库文件只在core文件夹中区别,要修改时只需将core文件替换成自己想要的版本就ok了。
不要忘了数据库配置文件database.ini.php将她指向自己的mysql,具体内容如下:

<?phpif (!defined('IN_XIAOCMS')) exit();return array (  'host' => '127.0.0.1',  //连接本机测试  'username' => 'root'//数据库用户名  'password' => '',  //密码  'dbname' => 'xiaocms',  //数据库名  'prefix' => 'xiao_',  //数据表前缀  'port' => '3306',  //mysql端口号  'charset' => 'utf8',  //编码格式);

将sqllite数据库转成mysql格式

而如何将sqllite数据库转成mysql,我是没有找到合适的方法,有很多人推荐SQLLiteManager和sqlliteStudio,但是我真的是不会用,最后只能在sqlliteStudio中浏览,再在mysql中建出一模一样的表。

  • sqlLiteStudio下载地址:https://sqlitestudio.pl/index.rvt?act=download
  • 安装之
  • 连接数据库,输入自己的sqllite数据库打开,如下图:
    这里写图片描述

  • 此时就会出现各数据表以及表的结构、数据等

  • 点击“DDL”,里面有对应表的sql语句,使用它就可以轻松建表
    这里写图片描述

  • 建表后出现表结构,在点击“数据”,里面会有表中的具体数据了,照着新建就好了
    这里写图片描述

giant bug

在更改数据库时,遇到了很多问题,但是经过我的不懈努力,最后都一一解决了,希望你们也有同样的耐心和好运气。在这里,还要着重感谢一下我的工作上的前辈们,谢先森和王先森。我的编程之路上因为有你们顺畅了许多。

错误提示一:

Fatal error: Uncaught Error: Function name must be a string in D:\Documents\tohu\core\controller\Base.class.php:180 Stack trace: #0 D:\Documents\tohu\admin\controller\content.php(156): Base->get_data_fields(Array, Array) #1 D:\Documents\tohu\core\xiaocms.php(68): content->editAction() #2 D:\Documents\tohu\admin\index.php(11): xiaocms::run() #3 {main} thrown in D:\Documents\tohu\core\controller\Base.class.php on line 180

分析:调试运行发现是下面这部分代码的问题

 if (method_exists($field, $t['formtype']))       $data_fields .= $field->$t['formtype']($t['field'], $content, $t['setting']);       $data_fields .= ($t['tips'] ? '<div class="onShow">' . $t['tips'] . '</div>' : '') . '</td></tr>';  //控制错误提示内容

解决办法:

 if (!method_exists($field, $t['formtype']))       $data_fields .= $field->$t['formtype']($t['field'], $content, $t['setting']);       $data_fields .= ($t['tips'] ? '<div class="onShow">' . $t['tips'] . '</div>' : '') . '</td></tr>';

错误提示二:

Fatal error:Uncaught ArgumentCountError:Too few arguments to function uploadfile:upload(),2 passed inD:\Documents\tohu\admin\controller\uploadfile.php on line 182 and exactly 3 expected in D:\Documents\tohu\admin\controller\uploadfile.php:194 Stack trace:#0D:\Documents\tohu\admin\controller\uploadfile.php(182):upload('imgFile',Array)#1D:\Documents\tohu\core\xiaocms.php(68):uploadfile->kindeditor_uploadAction()#2D:\Documents\tohu\admin\index.php(11):xiaocms:run() #3 (main)thrown in D:\Documents\tohu\admin\controller\uploadfile.php on line 194

解决方案:
修改D:\Documentstohu\admin\uploadfile.php中的编辑器上传函数kindeditor_uploadAction(),如下:

/**     * 编辑器上传     */    public function kindeditor_uploadAction() {        $ext_arr = array(            'image' => array('gif', 'jpg', 'jpeg', 'png', 'bmp'),            'flash' => array('swf', 'flv'),            'media' => array('swf', 'flv', 'mp3', 'wav', 'wma', 'wmv', 'mid', 'avi', 'mpg', 'asf', 'rm', 'rmvb'),            'file' => array('doc', 'docx', 'xls', 'xlsx', 'ppt', 'htm', 'html', 'txt', 'zip', 'rar', 'gz', 'bz2'),         );        $dir_name = $this->get('dir') ? $this->get('dir')  : 'image';        if (empty($ext_arr[$dir_name])) {            echo json_encode(array('error' => 1, 'message' => '目录名不正确。'));            exit;        }        $data = $this->upload('imgFile', $ext_arr[$dir_name],100);  //upload()方法少了第三个参数,此参数代表要上传文件的大小,是必须的。        if (!$data['result']) {            echo json_encode(array('error' => 1, 'message' => ''));exit;        } else {            echo json_encode(array('error' => 0, 'url' => $data['path']));exit;        }    }

注:虽然这里规定了上传文件的最大值,但是具体的参数还要受到xampp本身配置文件的限制。

错误提示三

Fatal error:Uncaught PDOException:SQLSTATE[23000];Integrity constraint violation:1062 Duplicate entry '0' for key 'PRIMARY' in D:\Documents\tohu\core\library\dbpdo.class.php:57 Stack trace:#0D:\Documents\tohu\core\library\dbpdo.class.php(57):PDOStatement->execute(Array) #1 D:\Document\tohu\core\library\dbpdi.class.php(162):dbpdo->execute('INSERTINTOxia...',Array)#2D:\Documents\tohu\core\library\Model.class.php(90):dbpdo->indert('xiao_content',Array,true) #3 D:\Documents\tohu\core\admin\controller\content.php(105):Model->insert(true) #4D:\Documents\tohu\core\xiaocms.php(67):content->addAction() #5 D:\Documents\tohu\admin\index.php(11):xiaocms:run() #6(main) throw in D:\Documents\tohu\core\library\dbpdodo.class.php on line 57

分析:这是由于在数据表xiao_content中,主键id没有设置自增属性,导致插入的数据有误。

解决方案:修改数据表中的对应字段id,将其设为自增。
注意:在主键值有“0”的情况下,是不能给主键设置自增属性的,错误号如下:
这里写图片描述

需要将主键为“0”的值先修改为与其他主键不一致的值后,才能修改。修改完成后再将此项的主键值修改成自己想要的即可。

0 0