AttributeError: 'DocType' object has no attribute 'engine' when running update to 7.1

I just updated the code to 7.1

Well, this is new to me. Anyway, what’s odd about this issue is that, when the patch runs the second time, it goes through. I’ve had the same issue several times on multiple sites.

Executing frappe.patches.v7_1.sync_language_doctype in erpnext.dev (68aa9e2822a6f0cb)
Traceback (most recent call last):
  File "/usr/lib/python2.7/runpy.py", line 162, 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 "/home/vjfalk/frappe-subcription/apps/frappe/frappe/utils/bench_helper.py", line 79, in <module>
    main()
  File "/home/vjfalk/frappe-subcription/apps/frappe/frappe/utils/bench_helper.py", line 16, in main
    click.Group(commands=commands)(prog_name='bench')
  File "/home/vjfalk/frappe-subcription/env/local/lib/python2.7/site-packages/click/core.py", line 716, in __call__
    return self.main(*args, **kwargs)
  File "/home/vjfalk/frappe-subcription/env/local/lib/python2.7/site-packages/click/core.py", line 696, in main
    rv = self.invoke(ctx)
  File "/home/vjfalk/frappe-subcription/env/local/lib/python2.7/site-packages/click/core.py", line 1060, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/vjfalk/frappe-subcription/env/local/lib/python2.7/site-packages/click/core.py", line 1060, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/vjfalk/frappe-subcription/env/local/lib/python2.7/site-packages/click/core.py", line 889, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/vjfalk/frappe-subcription/env/local/lib/python2.7/site-packages/click/core.py", line 534, in invoke
    return callback(*args, **kwargs)
  File "/home/vjfalk/frappe-subcription/env/local/lib/python2.7/site-packages/click/decorators.py", line 17, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/home/vjfalk/frappe-subcription/apps/frappe/frappe/commands/__init__.py", line 24, in _func
    ret = f(frappe._dict(ctx.obj), *args, **kwargs)
  File "/home/vjfalk/frappe-subcription/apps/frappe/frappe/commands/site.py", line 209, in migrate
    migrate(context.verbose, rebuild_website=rebuild_website)
  File "/home/vjfalk/frappe-subcription/apps/frappe/frappe/migrate.py", line 30, in migrate
    frappe.modules.patch_handler.run_all()
  File "/home/vjfalk/frappe-subcription/apps/frappe/frappe/modules/patch_handler.py", line 29, in run_all
    if not run_single(patchmodule = patch):
  File "/home/vjfalk/frappe-subcription/apps/frappe/frappe/modules/patch_handler.py", line 63, in run_single
    return execute_patch(patchmodule, method, methodargs)
  File "/home/vjfalk/frappe-subcription/apps/frappe/frappe/modules/patch_handler.py", line 83, in execute_patch
    frappe.get_attr(patchmodule.split()[0] + ".execute")()
  File "/home/vjfalk/frappe-subcription/apps/frappe/frappe/patches/v7_1/sync_language_doctype.py", line 5, in execute
    frappe.reload_doc('core', 'doctype', 'language')
  File "/home/vjfalk/frappe-subcription/apps/frappe/frappe/__init__.py", line 645, in reload_doc
    return frappe.modules.reload_doc(module, dt, dn, force=force)
  File "/home/vjfalk/frappe-subcription/apps/frappe/frappe/modules/utils.py", line 141, in reload_doc
    return import_files(module, dt, dn, force=force)
  File "/home/vjfalk/frappe-subcription/apps/frappe/frappe/modules/import_file.py", line 17, in import_files
    return import_file(module, dt, dn, force=force, pre_process=pre_process)
  File "/home/vjfalk/frappe-subcription/apps/frappe/frappe/modules/import_file.py", line 22, in import_file
    ret = import_file_by_path(path, force, pre_process=pre_process)
  File "/home/vjfalk/frappe-subcription/apps/frappe/frappe/modules/import_file.py", line 54, in import_file_by_path
    import_doc(doc, force=force, data_import=data_import, pre_process=pre_process)
  File "/home/vjfalk/frappe-subcription/apps/frappe/frappe/modules/import_file.py", line 122, in import_doc
    doc.insert()
  File "/home/vjfalk/frappe-subcription/apps/frappe/frappe/model/document.py", line 222, in insert
    self.run_post_save_methods()
  File "/home/vjfalk/frappe-subcription/apps/frappe/frappe/model/document.py", line 771, in run_post_save_methods
    self.run_method("on_update")
  File "/home/vjfalk/frappe-subcription/apps/frappe/frappe/model/document.py", line 654, in run_method
    out = Document.hook(fn)(self, *args, **kwargs)
  File "/home/vjfalk/frappe-subcription/apps/frappe/frappe/model/document.py", line 882, in composer
    return composed(self, method, *args, **kwargs)
  File "/home/vjfalk/frappe-subcription/apps/frappe/frappe/model/document.py", line 865, in runner
    add_to_return_value(self, fn(self, *args, **kwargs))
  File "/home/vjfalk/frappe-subcription/apps/frappe/frappe/model/document.py", line 648, in <lambda>
    fn = lambda self, *args, **kwargs: getattr(self, method)(*args, **kwargs)
  File "/home/vjfalk/frappe-subcription/apps/frappe/frappe/core/doctype/doctype/doctype.py", line 142, in on_update
    updatedb(self.name, self)
  File "/home/vjfalk/frappe-subcription/apps/frappe/frappe/model/db_schema.py", line 69, in updatedb
    tab.sync()
  File "/home/vjfalk/frappe-subcription/apps/frappe/frappe/model/db_schema.py", line 146, in sync
    self.create()
  File "/home/vjfalk/frappe-subcription/apps/frappe/frappe/model/db_schema.py", line 181, in create
    engine=self.meta.engine or 'InnoDB') % (self.name, add_text))
AttributeError: 'DocType' object has no attribute 'engine'

same problem here. trying this fix Bench update on custom app failing

will give you result after

Nah just try running bench update again, that should do it.

let me try bench update again. Thanks

Just ranbench update and the error still persists…

It does fix after i run update for more then 2 times, but i am hosting almost 80 sites!! i have to restart the bench update 80 times? haha any faster way?

someone suggests

bench migrate bench update --patch bench update

here Error in updating ERPNext to 7.1

you can actually sql it ALTER TABLE add the missing column