起因背景:
我有个 nocobase v1.3.x 时候用的 postgresql 数据库,搁置一段时间后,现在想启用。
我尝试在几个帖子里请教询问:
1.4版的备份恢复问题 - 中文讨论区 / 使用咨询 - NocoBase Forum
使用咨询: 只有数据库实例,如何启用并升级到最新? - 中文讨论区 / 使用咨询 - NocoBase Forum
Win11,尝试 docker 安装最新版,数据库是1.3.x 版本时候使用的,出错 - 中文讨论区 / 使用咨询 - NocoBase Forum
都没有得到答案,官方老师的回答也很奇怪,我都听不懂。无奈只能自己逐步尝试。
我来总结和回答这个问题:
1,nocobase 似乎没有区分应用版本和数据库版本。applicationVersion / application_version 表里记录了一个版本号,从表名猜测是应用版本。而实际上更多的情况都会区分应用版本和数据库版本,且互相匹配才允许使用。
2,安装 nocobase 应用的时候就会更新数据库,不管是哪种安装方式。
3,我遇到的那个图片上的问题,是因为我的安装环境变量 DB_UNDERSCORED 导致的。
4,nocobase 目前没有单独安装应用——连接数据库——升级数据库,这样的升级路径。(应该有!)
所以,目前来看的完整的数据库管理路线是:
备份数据库——(后期要使用时)——新建数据库——还原备份——(设置正确的 env 环境变量)——安装最新环境,即可。
要注意的点:
1,create-app 方式安装 nocobase 应用时,如果数据库环境变量设置错误,安装会受阻;docker 方式不会,docker 会建好 container 且 run 起来,你试图连接时才告诉你数据库无法连接。
2,环境变量 DB_UNDERSCORED 会影响安装及使用,建议环境变量里显式表达。
3,官方在文档和社区贴里从未说明,nocobase 的升级实际上是同时升级的应用和数据库;并且本质上没有 update,只有新环境的 setup,同时 setup 了数据库。
(所以我问的问题:是安装老版本,再升级到新版本?还是直接安装新版本?答案是:直接安装新版本,并且确保安装时正确连接了数据库(才能在安装时升级数据库)。)
(这一点其实也有疑问的,为什么没有区分处理应用升级和数据库升级?)