Skip to content

50 Most Common Odoo Errors and How to Fix Them

DeployMonkey Team · March 22, 2026 20 min read

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,0

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

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

Database 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_name

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

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

Module 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 root

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

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

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

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

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

Performance 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 settings

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

Web & 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 port

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

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

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