22 days ago
Project ID: xxxx-xxxx-xxxx-xxxx-xxxxx
Service: gristlabs/grist:latest
Volume: /persist
The document file (xxxxxxxxxxxxxx.grist) is corrupted and causes "connection lost" when opened. Restarting and re-importing both fail.
Please restore the /persist volume from a snapshot taken before 2026-07-28 to recover the document.
13 Replies
22 days ago
Volume backup restores are self-serve on Pro. Open your Grist service's Backups tab, locate a backup dated before 2026-07-28, and click Restore. This stages the change for review, mounting a new volume from the backup at /persist while retaining the current (corrupted) volume as a detached copy. Click Deploy to apply and redeploy the service with the restored data.
Status changed to Awaiting User Response Railway • 22 days ago
22 days ago
No backups available
Status changed to Awaiting Railway Response Railway • 22 days ago
22 days ago
Your volume has no backups because none were created (manually or via a scheduled backup) before the corruption occurred, so there is no prior snapshot to restore from. For the corrupted .grist file itself, you may be able to recover it using SQLite recovery tools since Grist documents are SQLite databases. Going forward, you can set up daily, weekly, or monthly backup schedules from the service's Backups tab so a restore point is available if this happens again.
Status changed to Awaiting User Response Railway • 22 days ago
22 days ago
Recommend SQLite recovery tools?
Status changed to Awaiting Railway Response Railway • 22 days ago
22 days ago
Having looked into this, the issue appears to be in your application code or configuration rather than the Railway platform itself, which puts it outside what Railway support can resolve directly.
This is exactly the kind of problem the Railway community is good at, so we'd like to open your thread as a community bounty. Railway pays a bounty to the community member who solves it, and threads like this usually get picked up quickly.
Opening it makes this entire thread public, including everything already posted. Nothing becomes public until you decide. Use the buttons below.
- Open to the community - Before you click, take a moment to edit or remove anything you'd rather not share. The thread becomes publicly visible right away.
- Keep it private and close the thread - Nothing becomes public. The thread closes, since this isn't something Railway support can take further.
Status changed to Awaiting User Response Railway • 22 days ago
22 days ago
This thread has been opened as a public bounty so the community can help solve it. The thread and any further activity are now visible to everyone.
Status changed to Open Railway • 22 days ago
22 days ago
Opening the .grist document in "BD Browser for SQLite" and it seems to be fine.
22 days ago
Thank you for your help. Where do I run -sqlite3 broken.grist ".recover"- ? Within BD Browser, or in a terminal?
22 days ago
Great. Thanks. I apologize for asking you to explain the alphabet to me, but I'm still lost.
I copied the .grist file and named it broken.grist
I ran sqlite3 broken.grist ".recover" and the terminal lists out the contents and then finishes with:
CREATE INDEX _grist_Attachments_fileIdent ON _grist_Attachments(fileIdent);
PRAGMA writable_schema = off;
COMMIT;
How I find what the recovered file is called?
22 days ago
You're amazing. Thank you so much.
However, do you also happen to know anything about Grist? I imported the "recovered" file but Grist still won't load it.
22 days ago
Should I just remove the container and re-deploy at this stage?
22 days ago
Integrity check returned "ok"
22 days ago
Still won't load. By the way, I only had the one singular document in Grist, if that helps the decision easier to scratch and re-build
22 days ago
So I don't know what happened but now both my original file and the "recovered" file will load into Grist....
Status changed to Open brody • 21 days ago