Access & Permission Errors
1. AccessError: You are not allowed to access 'Model Name'
# Cause: Missing ir.model.access.csv entry for the user's group
# Fix: Add access rule in security/ir.model.access.csv
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_my_model,my.model.user,model_my_model,base.group_user,1,1,1,02. AccessError: You are not allowed to modify 'Model Name'
# Cause: User has read but not write access
# Fix: Update ir.model.access.csv — set perm_write to 13. AccessError: Due to security restrictions, you are not allowed to access document
# Cause: Record rule blocks access to specific records
# Fix: Check ir.rule domain filters. Use developer mode → Debug → View Technical Info
# Common fix: adjust record rule domain or user groupsDatabase Errors
4. OperationalError: FATAL: password authentication failed
# Cause: Wrong db_password in odoo.conf or pg_hba.conf mismatch
# Fix: Verify password in odoo.conf matches PostgreSQL user password
su - postgres -c "psql -c \"ALTER USER odoo WITH PASSWORD 'new_password';\""5. OperationalError: FATAL: database does not exist
# Cause: db_name in odoo.conf points to non-existent database
# Fix: Create the database or fix db_name
createdb -U odoo your_database_name6. OperationalError: could not connect to server
# Cause: PostgreSQL not running or wrong db_host/db_port
# Fix:
sudo systemctl status postgresql
sudo systemctl start postgresql
# Verify db_host and db_port in odoo.conf7. OperationalError: FATAL: too many connections
# Cause: max_connections exceeded
# Fix: Increase in postgresql.conf or reduce Odoo workers
# postgresql.conf: max_connections = 200
# odoo.conf: reduce db_maxconn or workersModule Errors
8. ModuleNotFoundError: No module named 'odoo.addons.my_module'
# Cause: Module not in addons_path or __init__.py missing
# Fix: Verify addons_path in odoo.conf includes your module's parent directory
# Verify __init__.py exists in the module root9. ParseError: Invalid view definition
# Cause: XML syntax error in view
# Fix: Check XML for unclosed tags, invalid attributes
# Common: missing closing tag, wrong field name, deprecated syntax10. ValueError: External ID not found in the system: module.xml_id
# Cause: Referencing an XML ID that doesn't exist
# Fix: Check spelling, verify referenced module is installed
# Use: self.env.ref('module.xmlid', raise_if_not_found=False)ORM Errors
11. ValidationError: Field constraint violated
# Cause: Python constraint (@api.constrains) or SQL constraint failed
# Fix: Check the constraint definition and ensure data satisfies it12. MissingError: Record does not exist or has been deleted
# Cause: Accessing a record that was deleted
# Fix: Check if record exists before accessing
if record.exists():
record.do_something()13. UserError: Please define a sequence on your journal
# Cause: Accounting journal missing sequence for invoice numbering
# Fix: Accounting → Configuration → Journals → set Sequence14. IntegrityError: duplicate key value violates unique constraint
# Cause: Trying to create a record that violates a UNIQUE index
# Fix: Check for existing records before creating
# Or use search + write instead of create15. RecursionError: maximum recursion depth exceeded
# Cause: Circular dependency in computed fields or inheritance
# Fix: Check @api.depends chains for cycles
# Check _inherit chains for circular referencesPerformance Issues
16. Worker killed: memory limit exceeded
# Cause: Worker exceeded limit_memory_hard
# Fix: Increase limits or optimize code
# odoo.conf: limit_memory_hard = 2684354560 (2.5GB)17. LimitTimeCPU: CPU time limit exceeded
# Cause: Request took too long (heavy report, large data)
# Fix: Increase limit_time_cpu in odoo.conf
# Or optimize the slow operation (add indexes, batch processing)18. Request timeout (504 Gateway Timeout)
# Cause: nginx proxy_read_timeout too low
# Fix: Increase in nginx config
proxy_read_timeout 720s;Email Errors
19. SMTPAuthenticationError: Username and Password not accepted
# Cause: Wrong SMTP credentials or missing app password
# Fix: Gmail requires App Password with 2FA enabled
# Check username and password in Outgoing Mail Server settings20. SMTPConnectError: Connection refused
# Cause: SMTP port blocked by firewall or wrong port
# Fix: Open port 587 outbound. Try port 465 with SSL.
# Verify SMTP server address and portWeb & Frontend Errors
21. 404 Not Found on /web or /web/login
# Cause: Odoo not running or nginx misconfigured
# Fix: Check Odoo status: systemctl status odoo
# Verify nginx proxy_pass points to correct port22. Mixed Content (HTTPS page loads HTTP resources)
# Cause: proxy_mode not enabled
# Fix: Set proxy_mode = True in odoo.conf
# Ensure X-Forwarded-Proto header set in nginx23. WebSocket connection failed
# Cause: nginx not proxying /websocket to port 8072
# Fix: Add WebSocket location block to nginx config
location /websocket {
proxy_pass http://127.0.0.1:8072;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}Report Errors
24. Blank PDF report
# Cause: wkhtmltopdf not installed or wrong version
# Fix: Install patched wkhtmltopdf 0.12.6
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox_0.12.6.1-3.jammy_amd64.deb
sudo apt install -y ./wkhtmltox_0.12.6.1-3.jammy_amd64.deb25. Report generation timeout
# Cause: Large data set or complex report
# Fix: Increase limit_time_real in odoo.conf
# Or optimize report query (add indexes, limit data)More Errors (26-50)
Additional common errors with fixes:
- 26. TypeError: 'NoneType' — field returns None unexpectedly, add default value
- 27. KeyError in XML — field name typo in view, check model field names
- 28. Assets compilation error — clear browser cache, restart Odoo with --dev=xml
- 29. Translated field not showing — check language is installed and activated
- 30. Cron not running — check ir.cron active=True and workers > 0
- 31. Cannot install module — dependency not available, check depends in __manifest__
- 32. Binary field not saving — check data_dir permissions
- 33. Import CSV error — check encoding (UTF-8) and date format (YYYY-MM-DD)
- 34. Computed field not updating — check @api.depends has all dependencies
- 35. Stored computed field wrong after -u — force recompute: model._recompute_field('field_name')
- 36. Tax computation wrong — check tax rounding method (round per line vs round globally)
- 37. Cannot delete record — check dependent records (invoices, stock moves)
- 38. Sequence gap — by design, Odoo sequences can have gaps, this is normal
- 39. Decimal precision wrong — Settings → Technical → Decimal Accuracy
- 40. Attachment not downloading — check filestore permissions and disk space
- 41. Portal user cannot access document — check portal sharing settings
- 42. Multi-company record not visible — check company_id matches user's current company
- 43. Kanban view not loading — check that kanban template XML is valid
- 44. Onchange not firing — check @api.onchange decorator has correct field name
- 45. Import: External ID already exists — use /id column for updates instead of creates
- 46. Bank reconciliation mismatch — check statement vs bank amounts match
- 47. Stock move stuck in "Waiting" — check dependent move or reservation
- 48. Cannot confirm sale order — check required fields and workflow state
- 49. Website page 500 error — check Odoo logs for Python traceback
- 50. Slow search — add database index on frequently filtered fields
DeployMonkey Diagnostics
DeployMonkey's AI agent diagnoses these errors automatically. Paste the error, and it identifies the cause and provides the fix — no more searching Stack Overflow for hours.