Odoo: relation "project_task_burndown_chart_report" does not exist

We are creating a Proof of Concept for a Dutch government on the project apps of Odoo. However, specifically the following query raises an error:

select *
from odoo..project

Error:

itgenodo047:
Odoo Server Error:
: "relation “project_task_burndown_chart_report” does not exist
LINE 1:
SELECT COUNT(*) FROM “project_task_burndown_chart_report” WH… ^ "
while evaluating
for record in self: record[‘x_display_project_id_project_task_burndown_chart_report_count’] = self.env[‘project.task.burndown.chart.report’].search_count([(‘display_project_id’, ‘=’, record.id)])


We have create a native call log.

The Odoo API request body is on https://ACME.odoo.com/jsonrpc:

{"id":25,"jsonrpc":"2.0","method":"call","params":{"service":"object","method":"execute_kw","args":["acme",2,"secret","project.project","search_read",[],{"limit":1500,"offset":0}]}}

The answer is:

{"jsonrpc": "2.0", "id": 25, "error": {"code": 200, "message": "Odoo Server Error", "data": {"name": "builtins.ValueError", "debug": "Traceback (most recent call last):\n  File \"/home/odoo/src/odoo/16.0/odoo/api.py\", line 983, in get\n    cache_value = field_cache[record._ids[0]]\nKeyError: 3\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n  File \"/home/odoo/src/odoo/16.0/odoo/fields.py\", line 1160, in __get__\n    value = env.cache.get(record, self)\n  File \"/home/odoo/src/odoo/16.0/odoo/api.py\", line 990, in get\n    raise CacheMiss(record, field)\nodoo.exceptions.CacheMiss: 'project.project(3,).x_display_project_id_project_task_burndown_chart_report_count'\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n  File \"/home/odoo/src/odoo/16.0/odoo/tools/safe_eval.py\", line 362, in safe_eval\n    return unsafe_eval(c, globals_dict, locals_dict)\n  File \"\", line 2, in <module>\n  File \"/home/odoo/src/odoo/16.0/odoo/models.py\", line 1486, in search_count\n    res = self.search(domain, limit=limit, count=True)\n  File \"/home/odoo/src/odoo/16.0/odoo/models.py\", line 1508, in search\n    res = self._search(domain, offset=offset, limit=limit, order=order, count=count)\n  File \"/home/odoo/src/odoo/16.0/odoo/models.py\", line 4644, in _search\n    self._cr.execute(query_str, params)\n  File \"/home/odoo/src/odoo/16.0/odoo/sql_db.py\", line 313, in execute\n    res = self._obj.execute(query, params)\npsycopg2.errors.UndefinedTable: relation \"project_task_burndown_chart_report\" does not exist\nLINE 1: SELECT COUNT(*) FROM \"project_task_burndown_chart_report\" WH...\n                             ^\n\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n  File \"/home/odoo/src/odoo/16.0/odoo/http.py\", line 1583, in _serve_db\n    return service_model.retrying(self._serve_ir_http, self.env)\n  File \"/home/odoo/src/odoo/16.0/odoo/service/model.py\", line 134, in retrying\n    result = func()\n  File \"/home/odoo/src/odoo/16.0/odoo/http.py\", line 1610, in _serve_ir_http\n    response = self.dispatcher.dispatch(rule.endpoint, args)\n  File \"/home/odoo/src/odoo/16.0/odoo/http.py\", line 1807, in dispatch\n    result = self.request.registry['ir.http']._dispatch(endpoint)\n  File \"/home/odoo/src/odoo/16.0/addons/website/models/ir_http.py\", line 235, in _dispatch\n    response = super()._dispatch(endpoint)\n  File \"/home/odoo/src/odoo/16.0/odoo/addons/base/models/ir_http.py\", line 154, in _dispatch\n    result = endpoint(**request.params)\n  File \"/home/odoo/src/odoo/16.0/odoo/http.py\", line 696, in route_wrapper\n    result = endpoint(self, *args, **params_ok)\n  File \"/home/odoo/src/custom/trial/saas_trial/controllers/main.py\", line 275, in jsonrpc\n    res = super(OdooRPC, self).jsonrpc(service, method, args)\n  File \"/home/odoo/src/odoo/16.0/odoo/http.py\", line 696, in route_wrapper\n    result = endpoint(self, *args, **params_ok)\n  File \"/home/odoo/src/odoo/16.0/odoo/addons/base/controllers/rpc.py\", line 156, in jsonrpc\n    return dispatch_rpc(service, method, args)\n  File \"/home/odoo/src/odoo/16.0/odoo/http.py\", line 365, in dispatch_rpc\n    return dispatch(method, params)\n  File \"/home/odoo/src/odoo/16.0/odoo/service/model.py\", line 37, in dispatch\n    res = execute_kw(db, uid, *params[3:])\n  File \"/home/odoo/src/odoo/16.0/odoo/service/model.py\", line 59, in execute_kw\n    return execute(db, uid, obj, method, *args, **kw or {})\n  File \"/home/odoo/src/odoo/16.0/odoo/service/model.py\", line 65, in execute\n    res = execute_cr(cr, uid, obj, method, *args, **kw)\n  File \"/home/odoo/src/odoo/16.0/odoo/service/model.py\", line 50, in execute_cr\n    result = retrying(partial(odoo.api.call_kw, recs, method, args, kw), env)\n  File \"/home/odoo/src/odoo/16.0/odoo/service/model.py\", line 134, in retrying\n    result = func()\n  File \"/home/odoo/src/odoo/16.0/odoo/api.py\", line 457, in call_kw\n    result = _call_kw_model(method, model, args, kwargs)\n  File \"/home/odoo/src/odoo/16.0/odoo/api.py\", line 430, in _call_kw_model\n    result = method(recs, *args, **kwargs)\n  File \"/home/odoo/src/odoo/16.0/odoo/models.py\", line 4975, in search_read\n    result = records.read(fields, **read_kwargs)\n  File \"/home/odoo/src/odoo/16.0/odoo/models.py\", line 2979, in read\n    return self._read_format(fnames=fields, load=load)\n  File \"/home/odoo/src/odoo/16.0/odoo/models.py\", line 3136, in _read_format\n    vals[name] = convert(record[name], record, use_name_get)\n  File \"/home/odoo/src/odoo/16.0/odoo/models.py\", line 5858, in __getitem__\n    return self._fields[key].__get__(self, type(self))\n  File \"/home/odoo/src/odoo/16.0/odoo/fields.py\", line 1209, in __get__\n    self.compute_value(recs)\n  File \"/home/odoo/src/odoo/16.0/odoo/fields.py\", line 1368, in compute_value\n    records._compute_field_value(self)\n  File \"/home/odoo/src/odoo/16.0/addons/mail/models/mail_thread.py\", line 403, in _compute_field_value\n    return super()._compute_field_value(field)\n  File \"/home/odoo/src/odoo/16.0/odoo/models.py\", line 4193, in _compute_field_value\n    fields.determine(field.compute, self)\n  File \"/home/odoo/src/odoo/16.0/odoo/fields.py\", line 100, in determine\n    return needle(records, *args)\n  File \"/home/odoo/src/odoo/16.0/odoo/addons/base/models/ir_model.py\", line 37, in <lambda>\n    func = lambda self: safe_eval(text, SAFE_EVAL_BASE, {'self': self}, mode=\"exec\")\n  File \"/home/odoo/src/odoo/16.0/odoo/tools/safe_eval.py\", line 376, in safe_eval\n    raise ValueError('%s: \"%s\" while evaluating\\n%r' % (ustr(type(e)), ustr(e), expr))\nValueError: <class 'psycopg2.errors.UndefinedTable'>: \"relation \"project_task_burndown_chart_report\" does not exist\nLINE 1: SELECT COUNT(*) FROM \"project_task_burndown_chart_report\" WH...\n                             ^\n\" while evaluating\n\"\\nfor record in self: record['x_display_project_id_project_task_burndown_chart_report_count'] = self.env['project.task.burndown.chart.report'].search_count([('display_project_id', '=', record.id)])\\n\"\n", "message": "<class 'psycopg2.errors.UndefinedTable'>: \"relation \"project_task_burndown_chart_report\" does not exist\nLINE 1: SELECT COUNT(*) FROM \"project_task_burndown_chart_report\" WH...\n                             ^\n\" while evaluating\n\"\\nfor record in self: record['x_display_project_id_project_task_burndown_chart_report_count'] = self.env['project.task.burndown.chart.report'].search_count([('display_project_id', '=', record.id)])\\n\"", "arguments": ["<class 'psycopg2.errors.UndefinedTable'>: \"relation \"project_task_burndown_chart_report\" does not exist\nLINE 1: SELECT COUNT(*) FROM \"project_task_burndown_chart_report\" WH...\n                             ^\n\" while evaluating\n\"\\nfor record in self: record['x_display_project_id_project_task_burndown_chart_report_count'] = self.env['project.task.burndown.chart.report'].search_count([('display_project_id', '=', record.id)])\\n\""], "context": {}}}}

A ticket was raised at Odoo for this, since it is an internal failure of Odoo. See:

This question was automatically closed after at least 2 weeks of inactivity after a possible solution was provided. The last answer given has been marked as a solution.

Please ask a new question via a separate topic if the problem occurs again. Please include a link to this topic in the new question by pasting its URL into the text.

Response by Odoo:

It seems in the DB of your customer, there is a field created by Studio defined in project.project model and that field seems to point to project burndown chart report.
From version 16, We changed the Burndown Chart report to improve the performance and indeed the SQL view is no longer created, that’s why it does not find the relation project_task_burndown_chart_report.
However, I don’t know why your customer needs to use that report but he should probably find another way to do his PoC.

See UndefinedTable: relation \"project_task_burndown_chart_report\" does not exist\nLINE 1: SELECT COUNT(*) FROM \"project_task_burndown_chart_report\" · Issue #121636 · odoo/odoo · GitHub

Recommendation is to have your Odoo implementation partner correct the Odoo installation.

Problem was solved by removing a custom field x_display_project_id_project_task_burndown_chart_report_count which calculates an integer number using:

for record in self: record['x_display_project_id_project_task_burndown_chart_report_count'] = self.env['project.task.burndown.chart.report'].search_count([('display_project_id', '=', record.id)])
1 like