原先本博客使用的数据库为 MySQL,但由于没有什么人访问,且没有其它人同时参与编辑内容,所以 SQLite 就满足需求了,而且有以下两点好处:

  • 占用资源低
  • 因为是文本文件,备份方便

以下是在 Linux 平台下对 MySQL 数据库进行转换:

  1. 首先需要对MySQL 数据库中的数据进行导出:

    mysqldump -u数据库用户名 -p用户密码 数据库名字 > 数据库备份名字(建议将数据库名字命令的足够复杂)
    如: mysqldump -utest -p123456 typecho > typecho.sql

  2. 通过 git 获取 mysql2sqlite 脚本:

    git clone https://github.com/dumblob/mysql2sqlite.git

  3. 开始转换

    ./mysql2sqlite typecho.sql | sqlite3 typecho.db

转换好之后,将 typecho.db 放置在 typecho 程序中的 usr 目录中,权限修改为 0644 ,所属用户和组与其它程序文件一致,随后修改 typecho 程序根目录下的 config.inc.php 文件:
将以下代码

/** 定义数据库参数 */
$db = new Typecho_Db('Pdo_Mysql', 'typecho_');
$db->addServer(array (
  'host' => '127.0.0.1',
  'user' => 'xxxxxx',
  'password' => 'xxxxxx',
  'charset' => 'utf8',
  'port' => '3306',
  'database' => 'xxxxxx',
), Typecho_Db::READ | Typecho_Db::WRITE);
Typecho_Db::set($db);

替换为:

/** 定义数据库参数 */
$db = new Typecho_Db('Pdo_SQLite', 'typecho_');
$db->addServer(array (
  'file' => '这里填写数据库文件绝对路径,其它不用修改!例:/www/wwwroot/sunpma.com/usr/xxx.db',
), Typecho_Db::READ | Typecho_Db::WRITE);
Typecho_Db::set($db);

即可,如果访问首页,显示数据库错误,检查权限是否为 0644,另外 PHP 需要安装 SQLite 扩展。
那之前的 MySQL 数据库就可以停止了:

systemctl stop mariadb
systemctl disable mariadb

标签: none

添加新评论