Memos 还支持哪些数据库类型?

Viewed 4

Memos 支持以下数据库类型:

  • SQLite(默认)
  • MySQL(从版本 0.16.1 开始支持)
  • PostgreSQL(从版本 0.18.0 开始支持)
1 Answers

Memos还支持哪些数据库类型?

Memos 支持以下数据库类型:

  • SQLite(默认)
  • MySQL(从版本 0.16.1 开始支持)
  • PostgreSQL(从版本 0.18.0 开始支持)

使用 MySQL

推荐使用 MySQL 8.0 或更高版本。默认字符集和排序规则分别为 utf8mb4utf8mb4_unicode_ci

默认情况下,Memos 使用 SQLite 作为默认数据库驱动。如果需要切换到 MySQL,可按照以下步骤操作:

  • --driver mysql:此参数指定 Memos 使用 mysql 驱动,而不是默认的 sqlite 驱动。
  • --dsn dbuser:dbpass@tcp(dbhost)/dbname:提供 MySQL 服务器的连接详细信息。

您可以通过以下命令使用 Docker 启动 Memos:

docker run -d --name memos -p 5230:5230 -v ~/.memos/:/var/opt/memos neosmemo/memos:stable --driver mysql --dsn 'root:password@tcp(localhost)/memos_prod'

或者,您可以通过环境变量配置这些参数:

MEMOS_DRIVER=mysql
MEMOS_DSN=root:password@tcp(localhost)/memos_prod

使用 PostgreSQL

从版本 0.18.0 开始,Memos 也支持使用 PostgreSQL 作为数据库驱动。如果需要切换到 PostgreSQL,可按照以下步骤操作:

  • --driver postgres:此参数指定 Memos 使用 postgres 驱动,而不是默认的 sqlite 驱动。
  • --dsn postgresql://postgres:PASSWORD@localhost:5432/memos:提供 PostgreSQL 服务器的连接详细信息。

您可以通过以下命令使用 Docker 启动 Memos:

docker run -d --name memos -p 5230:5230 -v ~/.memos/:/var/opt/memos neosmemo/memos:stable --driver postgres --dsn 'postgresql://postgres:PASSWORD@localhost:5432/memos'

或者,您可以通过环境变量配置这些参数:

MEMOS_DRIVER=postgres
MEMOS_DSN=postgresql://root:password@localhost:5432/memos

注意:如果 PostgreSQL 服务器未配置支持 SSL 连接,则需要在 DSN 中添加 ?sslmode=disable

选择最适合您需求的数据库驱动,并相应配置 Memos。


Docker Compose 示例

以下 compose.yml 示例展示了如何将 Memos 与 PostgreSQL 数据库结合使用。

version: "3.0"
services:
  memos:
    image: neosmemo/memos:stable
    restart: always
    depends_on:
      - db
    ports:
      - 5230:5230
    environment:
      - MEMOS_DRIVER=postgres
      - MEMOS_DSN=user=memos password=secret dbname=memosdb host=db sslmode=disable

  db:
    image: postgres:16.1
    restart: unless-stopped
    volumes:
      - "./database:/var/lib/postgresql/data/"
    environment:
      POSTGRES_USER: memos
      POSTGRES_PASSWORD: secret
      POSTGRES_DB: memosdb

在不同数据库驱动之间迁移数据

您可以使用某种脚本语言完成数据迁移。例如,我使用 ChatGPT 帮助我实现了一个 SQLite 到 MySQL 的 Python 脚本:SQLite 到 MySQL 数据迁移

类似地,您也可以编写一个 SQLite 到 PostgreSQL 的脚本。

Related Questions