codecamp

从 SQLite 迁移到 MySQL

首先请确认 MySQL 的 Python 模块已经安装. Ubuntu 下,安装命令为 apt-get install python-mysqldb.

请按以下步骤操作:

  1. 停止 Seafile 和 Seahub

  2. 下载 sqlite2mysql.sh 和 sqlite2mysql.py 到 Seafile 的安装根目录(/data/haiwen)里.

  3. 运行 sqlite2mysql.sh 脚本

    chmod +x sqlite2mysql.sh
    ./sqlite2mysql.sh
    

    这个脚本将生成三个文件:ccnet-db.sqlseafile-db.sqlseahub-db.sql

  4. 新建3个数据库,分别命名为 ccnet-dbseafile-dbseahub-db.

    create database `ccnet-db` character set = 'utf8';
    create database `seafile-db` character set = 'utf8';
    create database `seahub-db` character set = 'utf8';
    
  5. 修改 /etc/my.conf, 添加下列语句,并重启 mysql (sudo service mysql restart),这个语句主要是确保数据库使用 UTF8 编码

     [mysqld]
     collation-server = utf8_unicode_ci
     init-connect='SET NAMES utf8'
     character-set-server = utf8
    
  6. 运行 sql 文件:

    mysql> use `ccnet-db`
    mysql> source ccnet-db.sql
    mysql> use `seafile-db`
    mysql> source seafile-db.sql
    mysql> use `seahub-db`
    mysql> source seahub-db.sql
    
  7. 更改配置

    在 conf/ccnet.conf 中增加以下语句:

     [Database]
     ENGINE=mysql
     HOST=127.0.0.1
     USER=root
     PASSWD=root
     DB=ccnet-db
     CONNECTION_CHARSET=utf8
    

    注意: 使用 127.0.0.1, 不要使用 localhost.

    将 seafile.conf 中的数据库配置信息更改文以下语句:

     [database]
     type=mysql
     host=127.0.0.1
     user=root
     password=root
     db_name=seafile-db
     CONNECTION_CHARSET=utf8
    

    在 seahub_settings.py 中增加以下语句:

     DATABASES = {
         'default': {
             'ENGINE': 'django.db.backends.mysql',
             'USER' : 'root',
             'PASSWORD' : 'root',
             'NAME' : 'seahub-db',
             'HOST' : '127.0.0.1',
             'OPTIONS': {
                 "init_command": "SET storage_engine=INNODB",
             }
         }
     }
    
  8. 重启 Seafile and Seahub

防火墙 / NAT 设置
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }