How to resolve missing attachments in Confluence
When viewing or attempting to download attachments, you may receive a "Page not found" error. Additionally, you may receive the following error in the logs:
No AttachmentData object was returned when it was expected for attachment: Attachment: fileName v.1 (123456789)
In many cases, the attachment itself is still on disk - and simply needs to be relocated to the location that Confluence is expecting it to be in.
Diagnosis - does this apply to you?
If your attachments are still somewhere in your attachment directory, this wiki will be able to help you resolve the broken attachments. To see if your attachments exist in your attachment directory, search the folder directory for an example attachment id of a broken attachment. For example, if your attachment has an ID of
123456789, search your confluence home directory for a folder with this name. If you get a result, it means your attachment is on disk. On a Unix like system, you could run a command like:
find <confluence-attachment-dir> | grep 123456789
If you're using database based attachment storage...
You should refer to the section labelled "Solution - Database Based Attachment Storage"
If searching for the attachment ID on disk produces no results...
You should not proceed with this document, and instead restore your missing attachments directory from a backup. You may still need to recover missing attachments after restoring the files to disk.
Solution #1 - For file system based attachment storage, and Confluence 3.0 and higher
We've got a script for fixing up missing attachments that still exist on disk!
Download the Missing Attachments Script and follow the directions in the README.MD file
Please ensure that at minimum Python 2.7 is installed, Python 3.5+ is recommended.
It's recommended to run this from a node but you may also run the script from a local machine, you simply need to ensure that it can access the attachments directory from wherever you're running the script from, and be sure that the user account running this script is the same user account in whom had been used to run your Confluence instance (preferred) or an account with equivalent rights.
Before you begin, ensure you have a full backup of your attachments directory. You should test your recovery on a test server before applying it to production.
If you're still unable to preview the attachment either from the page directly or via the Attachments link (but file download works fine):
- clear your browser cache and perform a hard reload of the page in your browser.
- Incognito mode may be useful for troubleshooting.
Solution #2 - For database based attachment storage
Please note that as of Confluence 5.6, attachment storage in the database is deprecated. Newer instances cannot swap to database attachment storage. If you are running database attachment storage, we recommend you migrate to file system storage.
There is no tool available to generate a report for missing attachments. However, if you find that you have attachments missing you can restore the attachment to the attachmentdata table from a recent SQL backup.
If you do not have a Confluence backup from which you can restore an attachment, you can delete the attachment's record from the database:
To delete the attachment if using database storage,
Run these SQL commands:
DELETE FROM CONTENTPROPERTIES WHERE CONTENTID IN (SELECT CONTENTID FROM CONTENT WHERE CONTENTTYPE = 'ATTACHMENT' and TITLE LIKE '%<ATTACHMENT_NAME>%'); DELETE FROM CONTENT WHERE CONTENTTYPE = 'ATTACHMENT' AND TITLE LIKE '%<ATTACHMENT_NAME>%';
DELETE FROM attachmentdata WHERE attachmentid IN (SELECT attachmentid FROM ATTACHMENTS WHERE TITLE LIKE '%<ATTACHMENT_NAME>%' ); DELETE FROM ATTACHMENTS WHERE TITLE LIKE '%<ATTACHMENTNAME>%'
The results returned from these queries don't confirm the attachments are missing.