Skip to content

关于取消对 sqlite 和 mysql 数据库支持的说明 #538

@dushixiang

Description

@dushixiang

由于个人精力有限,无法对多种数据库进行测试,v2.6.0 及之后的版本不再支持 SQLite 和 MySQL 数据库,请在升级前将数据迁移到 PostgreSQL。


使用迁移脚本(推荐)

脚本会引导你完成以下三个步骤:

  1. 启动 PostgreSQL(可选择由脚本自动拉起容器,数据持久化到宿主机目录)
  2. 迁移数据(通过 pgloader 将数据导入 PostgreSQL)
  3. 更新配置文件(自动修改 config.yamldocker-compose.yml,原文件备份为 .bak

前置要求: Python 3、Docker

wget https://raw.githubusercontent.com/dushixiang/next-terminal/refs/heads/master/scripts/migrate.py
python3 migrate.py

按提示选择来源数据库类型(SQLite 或 MySQL),并依次填写连接信息即可。


手动迁移

在 docker-compose.yaml 中增加 postgresql 数据库服务

postgresql:
  container_name: postgresql
  image: postgres:16.4
  environment:
    POSTGRES_DB: next-terminal
    POSTGRES_USER: next-terminal
    POSTGRES_PASSWORD: next-terminal
  volumes:
    - ./data/postgresql:/var/lib/postgresql/data
  restart: always

启动 postgresql 数据库

docker compose up -d

SQLite -> PostgreSQL

docker run --rm -it \
  -v ./data/nt.db:/db/nt.db \
  ghcr.io/dimitri/pgloader:latest \
  pgloader "sqlite:///db/nt.db" \
           "pgsql://PG用户名:PG密码@PG主机/PG数据库名"

MySQL -> PostgreSQL

docker run --rm -it \
  ghcr.io/dimitri/pgloader:latest \
  pgloader "mysql://MYSQL用户名:MYSQL密码@MYSQL主机/MYSQL数据库名" \
           "pgsql://PG用户名:PG密码@PG主机/PG数据库名"

迁移完成后,手动将 config.yaml 中的 Database 块替换为:

Database:
  Enabled: true
  Type: postgres
  Postgres:
    Hostname: PG主机
    Port: 5432
    Username: PG用户名
    Password: PG密码
    Database: PG数据库名
  ShowSql: false

如果是 Mysql 还需要手动 移除 Mysql 数据库服务配置

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions