Unknown column 'api_call' in 'field list during update

Like described in issue #21001, we experiencing problems with updating our ERPNext server.

During the ‘bench update’ or ‘bench update --reset’ command I get the following error. After this error ERPNext won’t start anymore ( Your system is being updated. Please refresh again after a few moments ).

Does anyone know how we can fix this issue? Thanks in advance!

Updating customizations for Address
Generating Website Theme Files...
Traceback (most recent call last):
File "/opt/bench/erpnext/apps/frappe/frappe/website/doctype/website_theme/website_theme.py", line 112, in generate_theme_files_if_not_exist
doc.generate_theme_if_not_exist()
File "/opt/bench/erpnext/apps/frappe/frappe/website/doctype/website_theme/website_theme.py", line 81, in generate_theme_if_not_exist
theme_path = join_path(bench_path, 'sites', self.theme_url[1:])
TypeError: 'NoneType' object is not subscriptable

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/usr/lib/python3.6/runpy.py", line 193, in _run_module_as_main
" **main** ", mod_spec)
File "/usr/lib/python3.6/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/opt/bench/erpnext/apps/frappe/frappe/utils/bench_helper.py", line 97, in
main()
File "/opt/bench/erpnext/apps/frappe/frappe/utils/bench_helper.py", line 18, in main
click.Group(commands=commands)(prog_name='bench')
File "/opt/bench/erpnext/env/lib/python3.6/site-packages/click/core.py", line 764, in **call**
return self.main(*args, **kwargs)
File "/opt/bench/erpnext/env/lib/python3.6/site-packages/click/core.py", line 717, in main
rv = self.invoke(ctx)
File "/opt/bench/erpnext/env/lib/python3.6/site-packages/click/core.py", line 1137, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/opt/bench/erpnext/env/lib/python3.6/site-packages/click/core.py", line 1137, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/opt/bench/erpnext/env/lib/python3.6/site-packages/click/core.py", line 956, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/opt/bench/erpnext/env/lib/python3.6/site-packages/click/core.py", line 555, in invoke
return callback(*args, **kwargs)
File "/opt/bench/erpnext/env/lib/python3.6/site-packages/click/decorators.py", line 17, in new_func
return f(get_current_context(), *args, **kwargs)
File "/opt/bench/erpnext/apps/frappe/frappe/commands/ **init** .py", line 25, in _func
ret = f(frappe._dict(ctx.obj), *args, **kwargs)
File "/opt/bench/erpnext/apps/frappe/frappe/commands/site.py", line 239, in migrate
migrate(context.verbose, rebuild_website=rebuild_website, skip_failing=skip_failing)
File "/opt/bench/erpnext/apps/frappe/frappe/migrate.py", line 67, in migrate
frappe.get_attr(fn)()
File "/opt/bench/erpnext/apps/frappe/frappe/website/doctype/website_theme/website_theme.py", line 115, in generate_theme_files_if_not_exist
frappe.log_error(frappe.get_traceback(), "Theme File Generation Failed")
File "/opt/bench/erpnext/apps/frappe/frappe/ **init** .py", line 1524, in log_error
method=title)).insert(ignore_permissions=True)
File "/opt/bench/erpnext/apps/frappe/frappe/model/document.py", line 245, in insert
self.db_insert()
File "/opt/bench/erpnext/apps/frappe/frappe/model/base_document.py", line 324, in db_insert
), list(d.values()))
File "/opt/bench/erpnext/apps/frappe/frappe/database/database.py", line 156, in sql
self._cursor.execute(query, values)
File "/opt/bench/erpnext/env/lib/python3.6/site-packages/pymysql/cursors.py", line 170, in execute
result = self._query(query)
File "/opt/bench/erpnext/env/lib/python3.6/site-packages/pymysql/cursors.py", line 328, in _query
conn.query(q)
File "/opt/bench/erpnext/env/lib/python3.6/site-packages/pymysql/connections.py", line 517, in query
self._affected_rows = self._read_query_result(unbuffered=unbuffered)
File "/opt/bench/erpnext/env/lib/python3.6/site-packages/pymysql/connections.py", line 732, in _read_query_result
result.read()
File "/opt/bench/erpnext/env/lib/python3.6/site-packages/pymysql/connections.py", line 1075, in read
first_packet = self.connection._read_packet()
File "/opt/bench/erpnext/env/lib/python3.6/site-packages/pymysql/connections.py", line 684, in _read_packet
packet.check_error()
File "/opt/bench/erpnext/env/lib/python3.6/site-packages/pymysql/protocol.py", line 220, in check_error
err.raise_mysql_exception(self._data)
File "/opt/bench/erpnext/env/lib/python3.6/site-packages/pymysql/err.py", line 109, in raise_mysql_exception
raise errorclass(errno, errval)
pymysql.err.InternalError: (1054, "Unknown column 'api_call' in 'field list'")

Is this the first update of a new installation or has it been updating without trouble? Can you say your ERPNext version?

No, it’s not the first time we are updating ERPNext. We started with a 10.x version of ERPNext, now we are at the latest currently available (12.7.1). Frappe version is also the latest available (12.5.1).

Is this a stable instance or are you making customizations? If it is being customized review anything you’ve done since the last update. Also any changes to the hosting environment, upgrades etc.

When we started, we configured a clean Ubuntu 18 LTS server. We try this machine up-to-date by carefully updating the packages install on this Linux server. So we are just updating the Linux packages and ERPNext itself. We don’t make changes in the configuration.

Does this thread have any relevance: https://discuss.frappe.io/t/unknown-column-error-issue/13361/3

Have you tried bench update --patch ?

I don’t know if it’s related to that thread. Unfortunately bench update --patch doesn’t work…

try, in a terminal: cd frappe-bench
bench console
import sys
sys.version , what is the output?
ctl-d to exit console

I’m sorry for my late reply. I don’t receive email updates anymore. sys.version outputs the following:

In [1]: import sys

In [2]: sys.version
Out[2]: '3.6.8 (default, Jan 14 2019, 11:02:34) \n[GCC 8.0.1 20180414 (experimental) [trunk revision 259383]]'

Have you tried bench migrate ?

Yes, I did…

File "/opt/bench/erpnext/apps/frappe/frappe/website/doctype/website_theme/website_theme.py", 
line 81, in generate_theme_if_not_exist theme_path = join_path(bench_path, 'sites', self.theme_url[1:])
TypeError: 'NoneType' object is not subscriptable

Is it possible you deleted a theme?

We are not using the built-in website module or themes functionality. So I don’t think I deleted it accidentally.

Hmmm.

You could stick some logging statements before line #81 that show what is being passed into join_path. Either bench_path or self.theme_url[1:] is screwed up somehow.

By the way:

You are asking for help with …

pymysql.err.InternalError: (1054, "Unknown column 'api_call' in 'field list'")

… but I believe that …

During handling of the above exception, another exception occurred:

… is trying to tell you that the first error is the one you should be investigating…

File "/opt/bench/erpnext/apps/frappe/frappe/website/doctype/website_theme/website_theme.py", line 81, in generate_theme_if_not_exist
theme_path = join_path(bench_path, 'sites', self.theme_url[1:])
TypeError: 'NoneType' object is not subscriptable

That sounds logical. I can’t find the website settings inside ERPNext. Since we don’t use that functionality, it’s possible I disabled it. But now I can’t find it anymore… Should I enable some modules or something like that?

What did logging at line #81 tell you?

Nothing… Maybe I’m doing it wrong, but I added some print statements before line #81, performed a bench restart, but nothing was printed to the console.

Let’s see your print line and about 10 lines before it.

I was trying to find the code, but since I’m editing code from Frappe, during update it asks me to revert the changes (bench update --reset). So when I add the code, it’s deleted immediately because of the --reset option. Now I’m trying to use the following bench execute command:

bench --site site1.local execute website.website_theme.website_theme.generate_theme_files_if_not_exist

This raises the following exception:
Traceback (most recent call last):
File “/usr/lib/python3.6/runpy.py”, line 193, in _run_module_as_main
main”, mod_spec)
File “/usr/lib/python3.6/runpy.py”, line 85, in _run_code
exec(code, run_globals)
File “/opt/bench/erpnext/apps/frappe/frappe/utils/bench_helper.py”, line 97, in
main()
File “/opt/bench/erpnext/apps/frappe/frappe/utils/bench_helper.py”, line 18, in main
click.Group(commands=commands)(prog_name=‘bench’)
File “/opt/bench/erpnext/env/lib/python3.6/site-packages/click/core.py”, line 764, in call
return self.main(*args, **kwargs)
File “/opt/bench/erpnext/env/lib/python3.6/site-packages/click/core.py”, line 717, in main
rv = self.invoke(ctx)
File “/opt/bench/erpnext/env/lib/python3.6/site-packages/click/core.py”, line 1137, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File “/opt/bench/erpnext/env/lib/python3.6/site-packages/click/core.py”, line 1137, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File “/opt/bench/erpnext/env/lib/python3.6/site-packages/click/core.py”, line 956, in invoke
return ctx.invoke(self.callback, **ctx.params)
File “/opt/bench/erpnext/env/lib/python3.6/site-packages/click/core.py”, line 555, in invoke
return callback(*args, **kwargs)
File “/opt/bench/erpnext/env/lib/python3.6/site-packages/click/decorators.py”, line 17, in new_func
return f(get_current_context(), *args, **kwargs)
File “/opt/bench/erpnext/apps/frappe/frappe/commands/init.py”, line 25, in _func
ret = f(frappe.dict(ctx.obj), *args, **kwargs)
File “/opt/bench/erpnext/apps/frappe/frappe/commands/utils.py”, line 145, in execute
ret = frappe.get_attr(method)(*args, **kwargs)
File “/opt/bench/erpnext/apps/frappe/frappe/init.py”, line 1042, in get_attr
throw(
(“App {0} is not installed”).format(app_name), AppNotInstalledError)
File “/opt/bench/erpnext/apps/frappe/frappe/init.py”, line 377, in throw
msgprint(msg, raise_exception=exc, title=title, indicator=‘red’, is_minimizable=is_minimizable)
File “/opt/bench/erpnext/apps/frappe/frappe/init.py”, line 356, in msgprint
_raise_exception()
File “/opt/bench/erpnext/apps/frappe/frappe/init.py”, line 316, in _raise_exception
raise raise_exception(msg)
frappe.exceptions.AppNotInstalledError: App website is not installed

Someone else will have to help you. This is beyond what I have learned so far.

Sorry.