ImportError: cannot import name Database

Hi
This error happens when I switch to master branch from develop using bench switch-to-branch master frappe succeed for both frappe & erpnext apps, then when I run bench update --patch I got this error

ImportError: cannot import name Database

then according to issu https://discuss.frappe.io/t/switch-branches-in-v11-cannot-import-name-database-issue/41162/15
I run; find . -name "*.pyc" -exec rm -f {} \; now when I run bench update --patch I get this error

pymysql.err.IntegrityError: (1048, u"Column 'translatable' cannot be null")

then according to issue https://discuss.frappe.io/t/column-translatable-cannot-be-null/34111/21
I altered some tables by using commands

alter table tabDocField modify column translatable int(1) NULL default 0;
 alter table tabDocField modify column allow_in_quick_entry int(1) NULL default 0;

and when I run bench update --patch I get the following error

bench@MMERP07:~/erpnext$ bench update --patch
Backing up sites...
Patching sites...
Migrating site1.local
Executing execute:frappe.reload_doc('core', 'doctype', 'docperm') #2017-03-03 in site1.local (_1bd3e0294da19198)
Success
Executing execute:frappe.delete_doc("DocType", "Hub Settings", ignore_missing=True) in site1.local (_1bd3e0294da19198)
Success
Executing erpnext.patches.v4_0.set_naming_series_property_setter in site1.local (_1bd3e0294da19198)
Traceback (most recent call last):
  File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/opt/bench/erpnext/apps/frappe/frappe/utils/bench_helper.py", line 94, in <module>
    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/local/lib/python2.7/site-packages/click/core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "/opt/bench/erpnext/env/local/lib/python2.7/site-packages/click/core.py", line 717, in main
    rv = self.invoke(ctx)
  File "/opt/bench/erpnext/env/local/lib/python2.7/site-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/opt/bench/erpnext/env/local/lib/python2.7/site-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/opt/bench/erpnext/env/local/lib/python2.7/site-packages/click/core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/opt/bench/erpnext/env/local/lib/python2.7/site-packages/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/opt/bench/erpnext/env/local/lib/python2.7/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 24, in _func
    ret = f(frappe._dict(ctx.obj), *args, **kwargs)
  File "/opt/bench/erpnext/apps/frappe/frappe/commands/site.py", line 222, in migrate
    migrate(context.verbose, rebuild_website=rebuild_website)
  File "/opt/bench/erpnext/apps/frappe/frappe/migrate.py", line 31, in migrate
    frappe.modules.patch_handler.run_all()
  File "/opt/bench/erpnext/apps/frappe/frappe/modules/patch_handler.py", line 29, in run_all
    if not run_single(patchmodule = patch):
  File "/opt/bench/erpnext/apps/frappe/frappe/modules/patch_handler.py", line 63, in run_single
    return execute_patch(patchmodule, method, methodargs)
  File "/opt/bench/erpnext/apps/frappe/frappe/modules/patch_handler.py", line 83, in execute_patch
    frappe.get_attr(patchmodule.split()[0] + ".execute")()
  File "/opt/bench/erpnext/apps/erpnext/erpnext/patches/v4_0/set_naming_series_property_setter.py", line 36, in execute
    series_to_set = get_series_to_set()
  File "/opt/bench/erpnext/apps/erpnext/erpnext/patches/v4_0/set_naming_series_property_setter.py", line 49, in get_series_to_set
    if not frappe.db.a_row_exists(doctype):
  File "/opt/bench/erpnext/apps/frappe/frappe/database.py", line 788, in a_row_exists
    return self.sql("select name from `tab{doctype}` limit 1".format(doctype=doctype))
  File "/opt/bench/erpnext/apps/frappe/frappe/database.py", line 176, in sql
    self._cursor.execute(query)
  File "/opt/bench/erpnext/env/local/lib/python2.7/site-packages/pymysql/cursors.py", line 170, in execute
    result = self._query(query)
  File "/opt/bench/erpnext/env/local/lib/python2.7/site-packages/pymysql/cursors.py", line 328, in _query
    conn.query(q)
  File "/opt/bench/erpnext/env/local/lib/python2.7/site-packages/pymysql/connections.py", line 516, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "/opt/bench/erpnext/env/local/lib/python2.7/site-packages/pymysql/connections.py", line 727, in _read_query_result
    result.read()
  File "/opt/bench/erpnext/env/local/lib/python2.7/site-packages/pymysql/connections.py", line 1066, in read
    first_packet = self.connection._read_packet()
  File "/opt/bench/erpnext/env/local/lib/python2.7/site-packages/pymysql/connections.py", line 683, in _read_packet
    packet.check_error()
  File "/opt/bench/erpnext/env/local/lib/python2.7/site-packages/pymysql/protocol.py", line 220, in check_error
    err.raise_mysql_exception(self._data)
  File "/opt/bench/erpnext/env/local/lib/python2.7/site-packages/pymysql/err.py", line 109, in raise_mysql_exception
    raise errorclass(errno, errval)
pymysql.err.ProgrammingError: (1146, u"Table '_1bd3e0294da19198.tabProduction Order' doesn't exist")

there is not any issue for this error.

Check if this helps you:

2 Likes

thank you @root13F to reply me
I already tried that, that solution leads me to another issue

Faced the same issue. I Fixed it.

If you are shifting between branches and facing this error (I face this error when I switch to develop and then back to staging-fixes), run the following command

if you are in frappe-bench folder
frappe-bench > cd apps/frappe
frappe-bench/apps/frappe > find . -name “*.pyc” -exec rm -f {} ;

Then
bench build & migrate. Working fine.

2 Likes

This syntax didn’t work for me, so stackoverflow recommended I try this instead:
find . -name \*.pyc -delete
find has a built in delete method apparently.

3 Likes

frappe-bench/apps/frappe > find . -name “*.pyc” -exec rm -f {} \ ;

there is \ before ; work for me.

Thanks