之前使用Gitea时为了快速使用,就使用了SQLite数据库。但是SQLite限制永远摆在那,后续使用可能会遇到部分问题。所以准备切换到PostgreSQL数据库(MYSQL用够了,尝尝鲜) MySQL数据库(切换时发现sqlite到PostgreSQL会丢失数据,还是老老实实的切换为MySQL)
参考了一下官方文档,提示安装时最好就选定数据库,官方提供的迁移脚本并未经过充分测试,可能会存在问题。但是目前只能迎难而上了。
参考了下面两篇文档
迁移前准备
因为之前安装时使用docker,则使用以下指令进入docker容器内
docker exec -it gitea /bin/bash进入最终导出目录/tmp ,切换用户并检查目录是否有文件
su git
ls -l /tmp
cd /tmp在尝试转换之前,请确保原始数据库是干净的。运行 gitea doctor check --all --fix 和 gitea doctor recreate-table 来解决常见问题。
询问AI一般执行第一条指令即可,第二条会重建数据表
check --all --fix:适合常规维护和小问题修复,相对安全。recreate-table:极端情况下的最后手段,需谨慎使用。
迁移
执行gitea dump --database mysql迁移数据,其中mysql就是最终的目标数据库;这条可按照实际需求改。
执行下一段指令,把最终文件从docker中拷贝出来。这段命令中前半段为容器名:文件路径,后半段为需要复制到的宿主机目录。注意文件名,可以通过ls 指令,查看导出的文件名。
docker cp gitea:/tmp/gitea-dump-1736409223.zip ~/注意,使用gitea dump是备份完整的gitea内容,使用本备份可以还原gitea实例。后面的指令是把数据库转换为另一个数据库。
导入目标数据库
如何导入,可以自行研究,没有唯一方法。这里我使用
根据官方的配置文件信息修改app.ini 配置文件为新的数据库。然后重启容器让配置文件生效即可。
评论