数据库配置
对应配置文件的 database 项。
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
driver | string | "sqlite3" | 数据库驱动,支持 sqlite3、mysql、postgres。 |
data_source | string | SQLite 文件 DSN | 数据源连接串,格式随驱动而异,见下。 |
max_open_conns | int | 4 | 最大打开连接数。<= 0 时按驱动自动取值。 |
max_idle_conns | int | 4 | 最大空闲连接数。<= 0 时按驱动自动取值; |
conn_max_life_time | int64 | 0 | 单个连接最大存活时间,单位秒。<= 0 时按驱动自动取值。 |
conn_max_idle_time | int64 | 0 | 单个连接最大空闲时间,单位秒。<= 0 时按驱动自动取值。 |
max_open_conns / max_idle_conns / conn_max_life_time / conn_max_idle_time 传 0 时的自动取值:
| driver | max_open_conns | max_idle_conns | conn_max_life_time | conn_max_idle_time |
|---|---|---|---|---|
sqlite3 | 4 | 4 | 不限 | 不限 |
mysql | 10 | 10 | 30 分钟 | 5 分钟 |
postgres | 10 | 10 | 30 分钟 | 5 分钟 |
SQLite(默认,零依赖)
file:<数据目录>/drive2dav.db?mode=rwc&_busy_timeout=5000&_txlock=immediate&_journal_mode=WAL&_foreign_keys=true各参数含义:
mode=rwc:文件不存在时创建_busy_timeout=5000:锁等待 5 秒_txlock=immediate:事务开始即取写锁,避免升级锁时死锁_journal_mode=WAL:WAL 模式,读写并发更好_foreign_keys=true:启用外键约束
请勿把 SQLite 数据库放在网络文件系统(NFS / SMB / 群晖 WebDAV 挂载)上,WAL 依赖可靠的共享内存与文件锁,放网络盘极易损坏数据库。媒体文件可以放网络盘,数据库必须放本地磁盘。
MySQL
示例:
json
{
"driver": "mysql",
"data_source": "user:password@tcp(127.0.0.1:3306)/drive2dav?charset=utf8mb4&parseTime=true&loc=Local"
}PostgreSQL
示例:
json
{
"driver": "postgres",
"data_source": "postgres://postgres:[email protected]:5432/drive2dav?sslmode=disable"
}注意事项
- 使用 MySQL 或者 PostgreSQL 时, 数据库必须提前创建,Drive2dav 只会自动建表、建索引和迁移结构,不会自动建库。
