• 从 SQLite 迁移到 MySQL

    从 SQLite 迁移到 MySQL

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

    请按以下步骤操作:

    1. 停止 Seafile 和 Seahub

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

    3. 运行 sqlite2mysql.sh 脚本

      1. chmod +x sqlite2mysql.sh
      2. ./sqlite2mysql.sh

      这个脚本将生成三个文件:ccnet-db.sql, seafile-db.sql, seahub-db.sql

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

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

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

      1. mysql> use `ccnet-db`
      2. mysql> source ccnet-db.sql
      3. mysql> use `seafile-db`
      4. mysql> source seafile-db.sql
      5. mysql> use `seahub-db`
      6. mysql> source seahub-db.sql
    7. 更改配置

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

      1. [Database]
      2. ENGINE=mysql
      3. HOST=127.0.0.1
      4. USER=root
      5. PASSWD=root
      6. DB=ccnet-db
      7. CONNECTION_CHARSET=utf8

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

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

      1. [database]
      2. type=mysql
      3. host=127.0.0.1
      4. user=root
      5. password=root
      6. db_name=seafile-db
      7. CONNECTION_CHARSET=utf8

      seahub_settings.py 中增加以下语句:

      1. DATABASES = {
      2. 'default': {
      3. 'ENGINE': 'django.db.backends.mysql',
      4. 'USER' : 'root',
      5. 'PASSWORD' : 'root',
      6. 'NAME' : 'seahub-db',
      7. 'HOST' : '127.0.0.1',
      8. 'OPTIONS': {
      9. "init_command": "SET storage_engine=INNODB",
      10. }
      11. }
      12. }
    8. 重启 Seafile and Seahub