Ghost 5.0 升级到 5.42
距离上次升级 Ghost 已经过去快 1 年了,上次是 Ghost 5.0 刚发布的时候升级的,这次直接把容器镜像版本改为最新的 5.42 时,报了个错:
ERROR connect ECONNREFUSED 127.0.0.1:3306
connect ECONNREFUSED 127.0.0.1:3306
"Unknown database error"
Error ID:
500
Error Code:
ECONNREFUSED
Error: connect ECONNREFUSED 127.0.0.1:3306
at /var/lib/ghost/versions/5.42.0/node_modules/knex-migrator/lib/database.js:57:19
at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1278:16)
重试了几次都不行,在 Ghost 的文档中找了半天也没发现从 5.0 升级到 5.42 中间有什么 breaking changes。最后从 Ghost 的 Docker 镜像维护仓库找到了相关的 Issue:#323
大致原因主要是这样,Ghost 5.0 之后其实是有个 breaking change,就是原先数据库是支持 SQLite3 和 MySQL 5 的,在 5.0 之后,数据库只支持 MySQL 8 了,但是 SQLite3 在开发环境还是支持的。对应的 Docker 镜像,在 5.9 之前,都还是可以继续用之前的 SQLite3 的,但是在 5.9 这个版本中,Docker 镜像将默认数据库改为了 MySQL 8,这就导致从低版本升到高于 5.9 版本的镜像之后,数据库会直接找不到。在这个 PR 中,其实给出了一个临时的解决方案,就是在环境变量中加两个变量,就可以继续使用 SQLite3,这两个变量是:
database__client: sqlite3
database__connection__filename: /var/lib/ghost/content/data/ghost.db
添加完之后,容器可以正常升级了。
但,既然官方已经将数据库支持重点改为了 MySQL 8,不怕麻烦的话,也可以升级下数据库。原本准备写个 MySQL 8 的升级教程的,想想不折腾了,我的博客用轻量的 SQLite3 就够了。
评论区