How to resolve missing attachments in Confluence

Still need help?

The Atlassian Community is here for you.

Ask the community

Platform notice: Server and Data Center only. This article only applies to Atlassian products on the Server and Data Center platforms.

Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.

*Except Fisheye and Crucible

tip/resting Created with Sketch.

We've fixed this issue in Confluence 8.1 and later versions, so you won't need to run the Missing Attachments Script. Learn more

Symptoms

When viewing or attempting to download attachments, you may receive a "Page not found" error. Additionally, you may receive either of the following errors in the application logs(atlassian-confluence.log)

No AttachmentData object was returned when it was expected for attachment: Attachment: fileName v.1 (123456789)

2023-03-11 13:06:30,291 WARN [http-nio-8081-exec-172] [atlassian.confluence.pages.DefaultAttachmentManager] getAttachmentData Could not find data for attachment: Attachment: image2022-1-8 11:48:26.png v.1 (873607111) mninnes - com.atlassian.confluence.pages.persistence.dao.filesystem.AttachmentDataFileSystemException: No such file for Attachment: image2022-1-8 11:48:26.png v.1 (873607111) mninnes. Were looking at /sharedhome/confluence/data/attachments/ver003/205/184/874184705/88/96/873596338/873607111/1

The key string for the second error is the 'Were looking at'.

In many cases, the attachment itself is still on disk but isn't located in the specific directory that it's expected to be in.  Often this is due to an earlier page move operation that was incomplete, and so if we can find the attachment still on disk in a different directory, we just need to relocate it to the correct subdirectory that Confluence is expecting it to be in.  As mentioned above, missing file problems are fixed in Confluence 8.1 because of the new attachment directory structure which doesn't require files to be moved if the page that they're attached to is moved)

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

or

find . -name 123456789

On a Windows system, you could use a command like:

dir <confluence-attachment-dir> /s | findstr 123456789

If you're using database based attachment storage...

You should refer to the section labelled "Solution - Database Based Attachment Storage" 

If you're hitting into missing attachments issue after performing Space Import

You should not proceed with this document, as when importing a Space - new IDs are generated for Space IDs, Page IDs and Attachment IDs, and the script would not work well. Instead, please contact Atlassian Support for further assistance.

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

tip/resting Created with Sketch.

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

(info) Please ensure that at minimum Python 2.7 is installed, Python 3.5+ is recommended. Confluence must also be stopped whilst this script runs to ensure that there's no concurrent file operations occurring within the attachments directory.

It's recommended to run this from a Confluence node but you may also run the script from a local machine. The script requires access to the attachments directory from wherever you choose to run the script from, so ideally you should ensure that the OS user account running this script is the same OS user account which runs the Confluence process (preferred), or an account with equivalent rights/permissions.

(warning) 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:

For Confluence 5.7 and newer
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>%';
For Confluence 5.6.x and older
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.

Last modified on Oct 30, 2023

Was this helpful?

Yes
No
Provide feedback about this article
Powered by Confluence and Scroll Viewport.