Encountering white screens, missing assets, or FileNotFoundError messages in Odoo can bring your operations to a halt. These issues typically stem from missing filestore folders, corrupted asset bundles, or permission problems—especially after database restores or system migrations.
The challenge becomes particularly acute for Odoo administrators and developers managing production systems. You’re not just dealing with a simple error—you’re navigating complex interactions between PostgreSQL databases, file system storage, and Odoo’s asset generation system that requires systematic troubleshooting.
This comprehensive guide addresses the most common Odoo filestore and asset issues, providing proven solutions based on real-world scenarios across Odoo 14.0 through 19.0. Whether you’re seeing blank screens, HTTP 500 errors, or backend FileNotFoundError messages, you’ll find step-by-step solutions to get your system running again.
Why Filestore and Assets Matter in Odoo
Understanding Odoo’s Dual Storage System
Odoo uses a sophisticated dual storage approach that separates database content from file attachments:
– Database Storage: Stores small attachments directly in PostgreSQL’s ir_attachment table
– Filestore Storage: Stores larger files in the file system using a hash-based directory structure (00-ff subdirectories)
– Asset Bundles: Compiled CSS, JavaScript, and web resources cached for performance
– User Uploads: Documents, images, and files uploaded through the Odoo interface
Common Failure Scenarios
These issues typically occur when:
– Database Restored Without Filestore: The database references files that don’t exist on disk
– Interrupted Asset Generation: Module updates or installations fail mid-process
– Permission Problems: The Odoo process can’t read or write to filestore directories
– Corrupted Cache: Asset bundles become corrupted and fail to load
Impact on System Operations
When filestore or asset issues occur, you’ll experience:
– White Screen of Death: Browser displays blank page with console errors
– Missing UI Elements: Icons, images, and styling fail to load
– Backend Errors: FileNotFoundError exceptions in Odoo logs
– HTTP 500 Errors: CSS and JavaScript files return server errors
Understanding Common Symptoms and Root Causes
What Makes These Issues Different?
Previous Odoo troubleshooting typically involved:
– Simple module updates
– Database connection issues
– Configuration file problems
Filestore and asset issues introduce fundamental challenges:
– Files exist in database records but not on disk
– Asset bundles reference non-existent resources
– Permission mismatches between database and file system
– Complex interactions between PostgreSQL and file storage
Symptom Categories
Critical (System Unusable):
– White screen with “AssetsLoadingError” in browser console
– Backend FileNotFoundError preventing server startup
– All CSS/JS files returning HTTP 500 errors
High (Partial Functionality):
– Missing icons and images
– Broken file downloads
– Incomplete UI rendering
Medium (Degraded Performance):
– Slow asset loading
– Intermittent file access errors
– Cache regeneration loops
Pre-Troubleshooting Assessment
Before diving into solutions, gather this critical information:
1. Identify Your Filestore Location
Windows Default:
c:\users\[username]\appdata\local\openerp s.a\odoo\filestore\[database_name]\
Linux Default:
~/.local/share/Odoo/filestore/[database_name]/
Check Your Configuration:
“`ini
[options]
data_dir = /path/to/odoo/data
# Filestore is in: /path/to/odoo/data/filestore/[database_name]/
“`
2. Check Browser Console Errors
Open browser developer tools (F12) and look for:
– “The loading of /web/assets/xxx failed”
– “AssetsLoadingError”
– HTTP 404 or 500 errors for asset files
3. Review Odoo Server Logs
Look for these error patterns:
“`
FileNotFoundError: [WinError 2] The system cannot find the file specified
‘c:\users\…\odoo\filestore\database_name/xx/xxxxx…’
“`
Solution 1: Regenerate Web Assets (Quickest Fix)
This is the fastest solution for asset-related white screens and should be your first attempt.
Method A: Command Line Regeneration
Windows:
“`bash
cd “C:\Program Files\Odoo 19.0.20251227\server”
python odoo-bin -d your_database_name -u web,website –stop-after-init
“`
Linux:
“`bash
./odoo-bin -d your_database_name -u web,website –stop-after-init
“`
This command updates the web and website modules, forcing Odoo to regenerate all asset bundles.
Method B: SQL-Based Asset Cleanup
For more thorough asset cleanup, use SQL to remove corrupted bundles:
1. Connect to PostgreSQL:
“`bash
psql -U odoo -d your_database_name
“`
2. Delete Asset Bundles:
“`sql
DELETE FROM ir_attachment WHERE name LIKE ‘%assets%’;
DELETE FROM ir_attachment WHERE name LIKE ‘%bundle%’;
“`
3. Exit and Restart:
“`bash
\q
sudo systemctl restart odoo
“`
Odoo will automatically regenerate assets on the next request.
Method C: UI-Based Cleanup (If Accessible)
If you can still access the Odoo interface:
1. Navigate to Settings → Technical → Database Structure → Attachments
2. Filter: name contains assets
3. Select all matching records → Delete
4. Restart Odoo server
5. Clear browser cache (Ctrl+Shift+Delete)
Solution 2: Restore Missing Filestore from Backup
When the filestore folder is truly missing, you need to restore it from backup.
Verify Filestore Structure
A healthy filestore has this structure:
“`
filestore/
└── database_name/
├── 00/
├── 01/
├── 02/
├── …
└── ff/
“`
Check Structure Exists:
“`bash
# Linux
ls ~/.local/share/Odoo/filestore/your_database_name/ | head
# Windows
dir “c:\users\hp_user\appdata\local\openerp s.a\odoo\filestore\your_database_name”
“`
Restore from Backup ZIP
1. Extract Backup:
“`bash
unzip your_backup.zip -d /tmp/backup_extract
“`
2. Verify Filestore Folder:
“`bash
ls /tmp/backup_extract/filestore/
“`
3. Copy to Correct Location:
Windows:
“`powershell
xcopy /E /I /Y “C:\temp\backup_extract\filestore” “c:\users\hp_user\appdata\local\openerp s.a\odoo\filestore\your_database_name”
“`
Linux:
“`bash
cp -r /tmp/backup_extract/filestore/* ~/.local/share/Odoo/filestore/your_database_name/
“`
4. Set Permissions (Linux Only):
“`bash
sudo chown -R odoo:odoo ~/.local/share/Odoo/filestore/your_database_name/
sudo chmod -R 755 ~/.local/share/Odoo/filestore/your_database_name/
“`
5. Restart Odoo
Solution 3: Clean Filestore References (When Recovery Impossible)
Use this approach when the filestore is permanently lost and cannot be recovered.
Option A: Remove All Filestore Attachments
This removes all file-based attachments while keeping database-stored ones:
“`sql
— Connect to database
psql -U odoo -d your_database_name
— Remove all attachments stored in filestore
DELETE FROM ir_attachment WHERE store_fname IS NOT NULL;
— Exit
\q
“`
After Cleanup:
1. Restart Odoo
2. Assets will regenerate automatically
3. User-uploaded files will be lost (if filestore was truly missing)
Option B: Remove Only Asset Attachments (Conservative)
More conservative approach that only removes system assets:
“`sql
DELETE FROM ir_attachment
WHERE store_fname IS NOT NULL
AND (name LIKE ‘%assets%’ OR name LIKE ‘%bundle%’);
“`
This preserves user-uploaded documents while cleaning corrupted system assets.
Solution 4: Fix File Permissions (Linux Systems)
Permission issues are common after manual file operations or system migrations.
Check Current Permissions
“`bash
ls -la ~/.local/share/Odoo/filestore/your_database_name/
“`
Look for ownership mismatches or restrictive permissions.
Fix Ownership
If Running as ‘odoo’ User:
“`bash
sudo chown -R odoo:odoo ~/.local/share/Odoo/filestore/
“`
If Running as Current User:
“`bash
chown -R $USER:$USER ~/.local/share/Odoo/filestore/
“`
Fix Directory and File Permissions
“`bash
# Directories: 755 (rwxr-xr-x)
find ~/.local/share/Odoo/filestore/ -type d -exec chmod 755 {} \;
# Files: 644 (rw-r–r–)
find ~/.local/share/Odoo/filestore/ -type f -exec chmod 644 {} \;
“`
Real-World Troubleshooting Examples
Example 1: White Screen After Database Restore
Scenario: Restored database from backup, now seeing white screen with “AssetsLoadingError”
❌ Problem:
– Database restored successfully
– Filestore folder not copied
– Assets reference non-existent files
✅ Solution:
“`bash
# Step 1: Regenerate assets
./odoo-bin -d restored_db -u web –stop-after-init
# Step 2: If still failing, clean asset references
psql -U odoo -d restored_db -c “DELETE FROM ir_attachment WHERE name LIKE ‘%assets%’;”
# Step 3: Restart Odoo
sudo systemctl restart odoo
“`
Example 2: FileNotFoundError on Windows
Scenario: Backend error showing specific file path not found
Error Message:
“`
FileNotFoundError: [WinError 2] The system cannot find the file specified
‘c:\users\hp_user\appdata\local\openerp s.a\odoo\filestore\production_db/a5/a5f3…’
“`
✅ Solution:
“`powershell
# Check if filestore exists
Test-Path “c:\users\hp_user\appdata\local\openerp s.a\odoo\filestore\production_db”
# If missing, restore from backup
xcopy /E /I /Y “D:\backups\filestore” “c:\users\hp_user\appdata\local\openerp s.a\odoo\filestore\production_db”
# Restart Odoo service
net stop odoo-server-19.0
net start odoo-server-19.0
“`
Example 3: Permission Denied on Linux
Scenario: Odoo can’t read filestore after manual file copy
✅ Solution:
“`bash
# Check current ownership
ls -la ~/.local/share/Odoo/filestore/
# Fix ownership and permissions
sudo chown -R odoo:odoo ~/.local/share/Odoo/filestore/production_db/
find ~/.local/share/Odoo/filestore/production_db/ -type d -exec chmod 755 {} \;
find ~/.local/share/Odoo/filestore/production_db/ -type f -exec chmod 644 {} \;
# Restart Odoo
sudo systemctl restart odoo
“`
Advanced Diagnostic Techniques
1. Verify Database References
Check how many attachments are stored in filestore vs database:
“`sql
SELECT
CASE
WHEN store_fname IS NOT NULL THEN ‘filestore’
ELSE ‘database’
END as storage_type,
COUNT(*) as count
FROM ir_attachment
GROUP BY storage_type;
“`
2. Find Missing Files
Identify specific files referenced in database:
“`sql
SELECT id, name, store_fname
FROM ir_attachment
WHERE store_fname IS NOT NULL
LIMIT 10;
“`
3. Test File Access
Linux:
“`bash
# Test if Odoo can read a specific file
sudo -u odoo cat ~/.local/share/Odoo/filestore/database_name/00/00000000000000000000000000000000
“`
Windows:
“`powershell
# Check if files exist in subdirectories
Test-Path “c:\users\hp_user\appdata\local\openerp s.a\odoo\filestore\database_name\00\*”
“`
Demo Videos
Watch these comprehensive tutorials showing Odoo filestore troubleshooting and database restoration:
Prevention Best Practices
1. Proper Backup Procedures
Using Odoo UI (Recommended):
– Navigate to Settings → Database Manager → Backup
– This automatically includes both database and filestore
– Creates a single ZIP file with everything needed
Manual Backup Script:
“`bash
#!/bin/bash
DB_NAME=”production_db”
BACKUP_DIR=”/backups/$(date +%Y%m%d)”
mkdir -p $BACKUP_DIR
# Backup database
pg_dump -U odoo -d $DB_NAME -f $BACKUP_DIR/database.sql
# Backup filestore
tar -czf $BACKUP_DIR/filestore.tar.gz ~/.local/share/Odoo/filestore/$DB_NAME/
# Create combined archive
cd $BACKUP_DIR
zip -r complete_backup_$(date +%Y%m%d_%H%M%S).zip database.sql filestore.tar.gz
“`
2. Proper Restore Procedures
Always Restore Both Components:
1. Database (SQL dump)
2. Filestore folder
Never:
– Restore only the database without filestore
– Copy database between systems without filestore
– Share database dumps without corresponding filestore
3. Regular Maintenance Checks
Weekly Verification:
“`sql
— Check for orphaned attachments
SELECT COUNT(*) FROM ir_attachment WHERE store_fname IS NOT NULL;
“`
Monthly Integrity Check:
“`bash
# Verify filestore file count
find ~/.local/share/Odoo/filestore/ -type f | wc -l
# Check filestore size
du -sh ~/.local/share/Odoo/filestore/
“`
4. Monitor Disk Space
“`bash
# Check filestore size by database
du -sh ~/.local/share/Odoo/filestore/*/
# Check available space
df -h ~/.local/share/Odoo/filestore/
# Set up alert when space < 10% ```
Emergency Recovery Procedures
When All Else Fails: Fresh Database Approach
If corruption is severe and backups are unavailable:
1. Create Fresh Database:
“`bash
createdb -U odoo new_database_name
“`
2. Initialize Base Modules:
“`bash
odoo-bin -d new_database_name -i base –stop-after-init
“`
3. Export Data Without Attachments:
“`bash
# Export data excluding attachments
pg_dump -U odoo -d old_database -t ‘*’ –exclude-table=ir_attachment -f data_only.sql
# Import to new database
psql -U odoo -d new_database_name -f data_only.sql
“`
4. Regenerate Assets:
“`bash
odoo-bin -d new_database_name -u all –stop-after-init
“`
Troubleshooting Common Issues
1. Assets Regenerate But Immediately Fail Again
Problem: Asset regeneration completes but white screen returns
Solution:
“`bash
# Clear all caches
rm -rf ~/.local/share/Odoo/sessions/*
# Regenerate with full module update
./odoo-bin -d database_name -u all –stop-after-init
# Check for module conflicts
./odoo-bin -d database_name –log-level=debug
“`
2. Specific Files Missing Despite Filestore Present
Problem: Filestore exists but specific files cause errors
Solution:
“`sql
— Find problematic attachments
SELECT id, name, store_fname, create_date
FROM ir_attachment
WHERE store_fname IS NOT NULL
ORDER BY create_date DESC
LIMIT 20;
— Remove specific problematic attachment
DELETE FROM ir_attachment WHERE id = [problematic_id];
“`
3. Permission Errors Persist After Fixing
Problem: Permissions look correct but access still denied
Solution:
“`bash
# Check SELinux context (if applicable)
ls -Z ~/.local/share/Odoo/filestore/
# Restore SELinux context
restorecon -R ~/.local/share/Odoo/filestore/
# Check for immutable flags
lsattr ~/.local/share/Odoo/filestore/
# Remove immutable flag if set
chattr -i ~/.local/share/Odoo/filestore/*
“`
4. Windows Service Can’t Access Filestore
Problem: Odoo Windows service has permission issues
Solution:
1. Open Services (services.msc)
2. Find Odoo service → Properties → Log On tab
3. Ensure service runs as user with filestore access
4. Or grant NETWORK SERVICE read/write to filestore folder
Quick Reference Commands
Asset Regeneration
“`bash
# Quick fix – web module only
odoo-bin -d DB_NAME -u web –stop-after-init
# Full regeneration – all modules
odoo-bin -d DB_NAME -u all –stop-after-init
# With debug logging
odoo-bin -d DB_NAME -u web –stop-after-init –log-level=debug
“`
SQL Asset Cleanup
“`sql
— Remove all assets
DELETE FROM ir_attachment WHERE name LIKE ‘%assets%’;
— Remove bundles only
DELETE FROM ir_attachment WHERE name LIKE ‘%bundle%’;
— Remove all filestore attachments
DELETE FROM ir_attachment WHERE store_fname IS NOT NULL;
“`
Filestore Verification
“`bash
# Linux – check structure
ls -lah ~/.local/share/Odoo/filestore/DB_NAME/ | head
# Linux – count files
find ~/.local/share/Odoo/filestore/DB_NAME/ -type f | wc -l
# Windows – check structure
dir “c:\users\USERNAME\appdata\local\openerp s.a\odoo\filestore\DB_NAME”
# Windows – verify subdirectories
dir “c:\users\USERNAME\appdata\local\openerp s.a\odoo\filestore\DB_NAME” /AD
“`
Service Restart
“`bash
# Linux (systemd)
sudo systemctl restart odoo
sudo systemctl status odoo
# Linux (manual)
pkill -f odoo-bin
./odoo-bin -c /etc/odoo/odoo.conf
# Windows
net stop odoo-server-19.0
net start odoo-server-19.0
“`
Diagnostic Checklist
Before seeking external help, verify:
– ☐ Filestore folder exists at correct location
– ☐ Filestore has subdirectories (00-ff)
– ☐ File permissions are correct (Linux: 755 for dirs, 644 for files)
– ☐ Odoo process can read filestore (test with sudo -u odoo)
– ☐ Database has attachment records (check ir_attachment table)
– ☐ Asset regeneration attempted (odoo-bin -u web)
– ☐ Browser cache cleared (Ctrl+Shift+Delete)
– ☐ Odoo logs checked for specific errors
– ☐ Disk space available (df -h)
– ☐ Tested with different browser
– ☐ Backup includes both database and filestore
– ☐ PostgreSQL service is running
When to Seek Professional Help
Contact Odoo support or community experts if:
– Filestore exists but errors persist after all solutions
– Permissions are correct but access still denied
– Assets regenerate successfully but immediately fail again
– Database corruption suspected (pg_dump fails)
– Multiple databases affected simultaneously
– Production system down for extended period
– Data loss risk is high
Useful Resources:
– Odoo Community Forum: https://www.odoo.com/forum
– Odoo Documentation: https://www.odoo.com/documentation/
– PostgreSQL Documentation: https://www.postgresql.org/docs/
Conclusion
Odoo filestore and asset troubleshooting requires a systematic approach that addresses the dual storage architecture of database records and file system storage. The solutions presented in this guide—from quick asset regeneration to complete filestore restoration—provide a comprehensive toolkit for resolving the most common issues.
Key Success Factors:
– Quick Diagnosis: Identify whether the issue is asset-related or filestore-related
– Proper Backups: Always include both database and filestore in backup procedures
– Permission Management: Ensure Odoo process has correct file system access
– Systematic Approach: Start with quickest solutions (asset regeneration) before complex recovery
Recovery Time Achieved:
– Asset regeneration: 2-5 minutes for most systems
– Filestore restoration: 10-30 minutes depending on size
– Permission fixes: 1-2 minutes
– Complete recovery: Under 1 hour for most scenarios
Long-term Advantages:
– Automated backup procedures prevent data loss
– Regular maintenance catches issues early
– Proper documentation speeds up troubleshooting
– Understanding the architecture enables faster diagnosis
By implementing the prevention best practices and maintaining proper backup procedures, you can minimize the risk of filestore and asset issues while ensuring rapid recovery when problems do occur. The investment in proper backup infrastructure and regular maintenance checks pays dividends in system reliability and reduced downtime.
Last updated on January 16, 2026