Appearance
数据库驱动
Memos 支持下列数据库类型:
- SQLite (默认支持)
- MySQL (从 0.16.1 开始支持)
- PostgreSQL (从 0.18.0 开始支持)
使用 MySQL
推荐使用 MySQL 8.0 或更高版本。默认的字符集和排序规则分别是
utf8mb4
和utf8mb4_unicode_ci
。
默认情况下,Memos 使用 SQLite 作为数据库驱动。要切换到 MySQL,你可以使用以下步骤:
- --driver mysql : 这个参数指定 Memos 应该使用
mysql
驱动而不是默认的sqlite
。
- --dsn dbuser:dbpass@tcp(dbhost)/dbname : 提供你的 MySQL 服务的详细链接信息。
你可以使用如下命令来通过 Docker 启动 Memos:
shell
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'
你也可以通过环境变量来设置这些值:
shell
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:
shell
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'
你也可以通过环境变量来设置这些值:
shell
MEMOS_DRIVER=postgres
MEMOS_DSN=postgresql://root:password@localhost:5432/memos
注意,如果 PostgreSQL 服务器未配置为支持 SSL 连接,则需要将 ?sslmode=disable 添加到 DSN。
你可以选择最适合你的数据库驱动,并为 Memos 进行对应的配置。
Docker Compose 示例
下面的 compose.yml
展示了使用 PostgreSQL 数据库来配置 Memos。
yml
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 to MySQL Migration。
类似地,你也使用同样的方法创建一个 SQLite 迁移到 PostgreSQL 的脚本