# How to resolve missing attachments in Confluence

#### Still need help?

The Atlassian Community is here for you.

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

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

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 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.

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!

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

• 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>%';
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.