Traceback (most recent call last):
File "/usr/lib/python3.10/runpy.py", line 196, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/usr/lib/python3.10/runpy.py", line 86, in _run_code
exec(code, run_globals)
File "/home/ubuntu/frappe-bench/apps/frappe/frappe/utils/bench_helper.py", line 114, in <module>
main()
File "/home/ubuntu/frappe-bench/apps/frappe/frappe/utils/bench_helper.py", line 20, in main
click.Group(commands=commands)(prog_name="bench")
File "/home/ubuntu/frappe-bench/env/lib/python3.10/site-packages/click/core.py", line 1442, in __call__
return self.main(*args, **kwargs)
File "/home/ubuntu/frappe-bench/env/lib/python3.10/site-packages/click/core.py", line 1363, in main
rv = self.invoke(ctx)
File "/home/ubuntu/frappe-bench/env/lib/python3.10/site-packages/click/core.py", line 1830, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/home/ubuntu/frappe-bench/env/lib/python3.10/site-packages/click/core.py", line 1830, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/home/ubuntu/frappe-bench/env/lib/python3.10/site-packages/click/core.py", line 1226, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/home/ubuntu/frappe-bench/env/lib/python3.10/site-packages/click/core.py", line 794, in invoke
return callback(*args, **kwargs)
File "/home/ubuntu/frappe-bench/env/lib/python3.10/site-packages/click/decorators.py", line 34, in new_func
return f(get_current_context(), *args, **kwargs)
File "/home/ubuntu/frappe-bench/apps/frappe/frappe/commands/__init__.py", line 29, in _func
ret = f(frappe._dict(ctx.obj), *args, **kwargs)
File "/home/ubuntu/frappe-bench/apps/frappe/frappe/commands/site.py", line 681, in migrate
SiteMigration(
File "/home/ubuntu/frappe-bench/apps/frappe/frappe/migrate.py", line 188, in run
self.run_schema_updates()
File "/home/ubuntu/frappe-bench/apps/frappe/frappe/migrate.py", line 52, in wrapper
raise e
File "/home/ubuntu/frappe-bench/apps/frappe/frappe/migrate.py", line 44, in wrapper
ret = method(*args, **kwargs)
File "/home/ubuntu/frappe-bench/apps/frappe/frappe/migrate.py", line 121, in run_schema_updates
frappe.modules.patch_handler.run_all(
File "/home/ubuntu/frappe-bench/apps/frappe/frappe/modules/patch_handler.py", line 76, in run_all
run_patch(patch)
File "/home/ubuntu/frappe-bench/apps/frappe/frappe/modules/patch_handler.py", line 62, in run_patch
if not run_single(patchmodule=patch):
File "/home/ubuntu/frappe-bench/apps/frappe/frappe/modules/patch_handler.py", line 152, in run_single
return execute_patch(patchmodule, method, methodargs)
File "/home/ubuntu/frappe-bench/apps/frappe/frappe/modules/patch_handler.py", line 179, in execute_patch
frappe.db.begin()
File "/home/ubuntu/frappe-bench/apps/frappe/frappe/database/database.py", line 1166, in begin
self.sql(f"START TRANSACTION {mode}")
File "/home/ubuntu/frappe-bench/apps/frappe/frappe/database/database.py", line 210, in sql
self.check_transaction_status(query)
File "/home/ubuntu/frappe-bench/apps/frappe/frappe/database/database.py", line 419, in check_transaction_status
self.check_implicit_commit(query)
File "/home/ubuntu/frappe-bench/apps/frappe/frappe/database/database.py", line 440, in check_implicit_commit
raise ImplicitCommitError("This statement can cause implicit commit")
frappe.exceptions.ImplicitCommitError: This statement can cause implicit commit
Could anyone provide a solution?
I’ve encountered this once or twice. What’s happening is:
- Patches are running against the SQL database.
- The framework believes a SQL Transaction is already in-progress.
- The patch has a SQL keyword that implicitly performs a SQL commit. Unintended implicit commits are usually a Bad Idea. So the framework is throwing an error and halting the patch.
The challenge here is that you, the person running the upgrade, have no idea What Patch It’s Referring To.
I had the same problem. Part of my solution was to alter the function “check_implicit_commit()” So that the error message includes the SQL query it was trying to run.
Once I could examine the SQL query, I was able to:
- Identify what was causing this implicit commit.
- Edit the Patch. So it would not perform that implicit SQL commit anymore.
You’ll probably have to do something similar. Otherwise you really don’t have any leads on where to begin troubleshooting.