Cloudreve迁移:V2-->V4
https://github.com/cloudreve/Cloudreve

cloudreve 是一款开源的网盘软件,我部署的版本比较老是V2版本,目前官方只有v3--》v4,怎么办:
环境:linux
cloudreve 使用sqlite作为数据库
1 首先下载v4新版本
2 直接运行./cloudreve
1) 虽然官方说使用 ./cloudreve migrate --v3-conf conf.ini -c data/conf.ini 命令可以直接将v3 转换为 v4,可是会报错:
[Error] 2025-06-12 20:40:33 [/home/vsts/work/1/s/cmd/migrate.go:62] Failed to migrate: failed to create setting hash_id_salt: SQL logic error: no such table: settings (1)
2)直接运行之后会产生 cloudreve.db 这个库文件,使用dbeaver连接进去,清理settings groups 等等表,否则会报约束错误:
[Error] 2025-06-12 21:33:13 [/home/vsts/work/1/s/cmd/migrate.go:62] Failed to migrate: failed to create setting hash_id_salt: ent: constraint failed: constraint failed: UNIQUE constraint failed: settings.name (2067)
3 在老库创建表,由于migrate并适用v2 版本,所以有些表迁移的时候会报失败:
[Error] 2025-06-12 21:35:03 [/home/vsts/work/1/s/cmd/migrate.go:62] Failed to migrate: failed to list v3 nodes: SQL logic error: no such table: nodes (1)
4 创建表
```
CREATE TABLE `source_links` (
`id` integer NOT NULL PRIMARY KEY AUTOINCREMENT,
`created_at` datetime,
`updated_at` datetime,
`deleted_at` datetime,
`node_id` integer,
`owner_id` integer
);
CREATE TABLE `nodes` (
`id` integer NOT NULL PRIMARY KEY AUTOINCREMENT,
`created_at` datetime,
`updated_at` datetime,
`deleted_at` datetime,
`name` varchar(255),
`source_name` varchar(255),
`parent_id` integer,
`size` bigint,
`type` varchar(255),
`policy_id` integer,
`owner_id` integer
);
```
5 运行迁移命令
# ./cloudreve migrate --v3-conf conf.ini -c data/conf.ini
[Info] 2025-06-12 21:38:45 [/home/vsts/work/1/s/application/dependency/dependency.go:267] Logger initialized with LogLevel="info".
[Info] 2025-06-12 21:38:45 [/home/vsts/work/1/s/cmd/migrate.go:35] Migrating from v3 to v4...
.................
[Info] 2025-06-12 21:38:45 [/home/vsts/work/1/s/application/migrator/migrator.go:307] Migration completed successfully
[Info] 2025-06-12 21:38:45 [/home/vsts/work/1/s/cmd/migrate.go:67] Migration from v3 to v4 completed successfully.
成功!


浙公网安备 33010602011771号