After upgrading from Ghost 4.48.7 to 5.22.6, admin posts page shows 404

Hi there,

I upgrade a self-hosted Ghost instance from version 4.48.7 to latest 5.22.6 yesterday following this guide: Ghost Docs.

The ghost update command showed successful upgrade, and the public blog site is functioning.

However, when I logged into the admin site at /ghost, I noticed these issues:

  • On the dashboard, the “Recent posts” section showed “No published posts yet.”
  • The “Posts” page showed 404, and all the pages under it, “Drafts”, “Scheduled”, and “Published” all showed 404
  • Other pages were working fine: “Pages”, “Tags”, “Settings”, etc.

Database:

  • Check MySQL version to be above MySQL 8: Ver 14.14 Distrib 5.7.40, for Linux (x86_64)
  • Checked that my production database’s “posts” table does have all the posts records still present.

Logs:

  • There were no obvious errors in the error log
  • The relevant log entry showed 404 but I couldn’t understand why this request was returning 404.
"req": {
      "meta": {
        "requestId": "dd04f71d-3415-4636-a1a7-4317558bfa48",
        "userId": "1"
      },
      "url": "/posts/?formats=mobiledoc%2Clexical&limit=30&page=1&filter=status%3A%5Bdraft%2Cscheduled%2Cpublished%2Csent%5D",
      "method": "GET",
      "originalUrl": "/ghost/api/admin/posts/?formats=mobiledoc%2Clexical&limit=30&page=1&filter=status%3A%5Bdraft%2Cscheduled%2Cpublished%2Csent%5D",
      "params": {},
      ...
      "query": {
        "formats": "mobiledoc,lexical",
        "limit": "30",
        "page": "1",
        "filter": "status:[draft,scheduled,published,sent]"
      }
      ...
      "res": {
      "_headers": {
        "x-powered-by": "Express",
        "vary": "Accept-Version, Accept-Encoding",
        "cache-control": "no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0",
        "content-type": "application/json; charset=utf-8",
        "content-length": "242",
        "etag": "W/\"f2-96AX1JJLqQmsWSdF3L13JjA0Nto\""
      },
      "statusCode": 404,
      "responseTime": "20ms"
    },
    "msg": "",
    "time": "2022-11-05T07:49:49.831Z",
    "v": 0

Any help and pointers on where I can look next for the root cause of this issue would be much appreciated.

There’s your problem. That’s not MySQL 8. That’s 5.7. If you can’t immediately upgrade your database, you could use the --force flag to upgrade (actually downgrade) Ghost to 5.20. It’s 5.21 that breaks on MySQL < 8. Technically, MySQL 8 has been required since Ghost 5.0, but 5.21 is the first time that it’s actually been broken on older versions.

So something like:

ghost update 5.20.0 --force 

That won’t get you to the current version (which will require you to update the DB), but it’ll get you close enough to use comments and where a theme that runs on Ghost 5.x should be good.

2 Likes

Hi Cathy,

Yes, I confused the MySQL client version with the server version. MySQL server was indeed using 5.7.

Good to know I could downgrade ghosts back to 5.20.0. I googled a bit and ended up following ubuntu - How do I update MySQL 5.7 to the new MySQL 8.0? - Stack Overflow to upgrade MySQL server from 5.7 to 8, and the admin / posts functionality is now fully working again!

Thank you so much, @Cathy_Sarisky, for the quick response and the really helpful information :pray:t2:

Glad that worked for you, and thanks for linking the resource you found helpful! I have a virtual server I need to do that process with, and I’m currently putting it off! :)

It’s a pleasure, good luck with the upgrade! :)