V5 Upgrade instructions

Hi Community,

As of now, version 5 is still on the develop branch and not on master. Here are the steps to upgrade to v5 on the develop branch

Step 0: Configure Barracuda

This step is only required if you ran the install script before 25th March, 2015

Create

  • /etc/mysql/conf.d/barracuda.cnf in case of Debian/Ubuntu or
  • /etc/my.cnf.d/barracuda.cnf in case of CentOS / RedHat

with the contents,

[mysqld]
innodb-file-format=barracuda
innodb-file-per-table=1
innodb-large-prefix=1
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

[mysql]
default-character-set = utf8mb4

Step 1: Update bench-repo

As the frappe user,

cd ~/bench-repo
git pull

Step 2: Switch branch

cd ~/frappe-bench
bench update --upgrade

This will take time.

Step 3: Restart services

If you’ve setup for production, run

service nginx restart
supervisorctl reload

as root.

Also, with version 5, the command line has changed, run

cd ~/frappe-bench
bench --help

to see the list of available commands

2 Likes

This topic is now unlisted. It will no longer be displayed in any topic lists. The only way to access this topic is via direct link.

This topic is now listed. It will be displayed in topic lists.

On a fresh install.
bench switch-to-develop

  Exception:
  Traceback (most recent call last):
    File "/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/pip/basecommand.py", line 246, in main
      status = self.run(options, args)
    File "/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/pip/commands/install.py", line 342, in run
      requirement_set.prepare_files(finder)
    File "/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/pip/req/req_set.py", line 345, in prepare_files
      functools.partial(self._prepare_file, finder))
    File "/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/pip/req/req_set.py", line 290, in _walk_req_to_install
      more_reqs = handler(req_to_install)
    File "/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/pip/req/req_set.py", line 487, in _prepare_file
      download_dir, do_download, session=self.session,
    File "/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/pip/download.py", line 827, in unpack_url
      session,
    File "/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/pip/download.py", line 673, in unpack_http_url
      from_path, content_type = _download_http_url(link, session, temp_dir)
    File "/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/pip/download.py", line 888, in _download_http_url
      _download_url(resp, link, content_file)
    File "/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/pip/download.py", line 621, in _download_url
      for chunk in progress_indicator(resp_read(4096), 4096):
    File "/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/pip/download.py", line 586, in resp_read
      decode_content=False):
    File "/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/response.py", line 273, in stream
      data = self.read(amt=amt, decode_content=decode_content)
    File "/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/response.py", line 203, in read
      data = self._fp.read(amt)
    File "/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/pip/_vendor/cachecontrol/filewrapper.py", line 54, in read
      self.__callback(self.__buf.getvalue())
    File "/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/pip/_vendor/cachecontrol/controller.py", line 224, in cache_response
      self.serializer.dumps(request, response, body=body),
    File "/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/pip/_vendor/cachecontrol/serialize.py", line 49, in dumps
      "body": _b64_encode_bytes(body),
    File "/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/pip/_vendor/cachecontrol/serialize.py", line 12, in _b64_encode_bytes
      return base64.b64encode(b).decode("ascii")
  MemoryError

Error: None
Traceback (most recent call last):
  File "/usr/local/bin/bench", line 9, in <module>
    load_entry_point('bench==0.1', 'console_scripts', 'bench')()
  File "/home/frappe/bench-repo/bench/cli.py", line 55, in cli
    bench()
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 664, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 644, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 991, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 837, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 464, in invoke
    return callback(*args, **kwargs)
  File "/home/frappe/bench-repo/bench/cli.py", line 303, in _switch_to_develop
    switch_to_develop(upgrade=upgrade)
  File "/home/frappe/bench-repo/bench/app.py", line 174, in switch_to_develop
    switch_branch('develop', apps=apps, bench=bench, upgrade=upgrade)
  File "/home/frappe/bench-repo/bench/app.py", line 162, in switch_branch
    update_requirements()
  File "/home/frappe/bench-repo/bench/utils.py", line 310, in update_requirements
    exec_cmd("{pip} install -q -r {req_file}".format(pip=pip, req_file=req_file))
  File "/home/frappe/bench-repo/bench/utils.py", line 72, in exec_cmd
    subprocess.check_call(cmd, cwd=cwd, shell=True)
  File "/usr/lib/python2.7/subprocess.py", line 540, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command './env/bin/pip install -q -r ./apps/frappe/requirements.txt' returned non-zero exit status 2

Sir Stuck on

Updating. We will be back in a few moments...

Memory error means you dont have enough RAM and the system is not able to swap.

What’s on the console?

I see, i am trying to run this on a virtual server with 512mb . Whats the min requirement?

I get this error, I’m not reproducing the entire progress, only from where it broke. I have been stuck on this for over a week and it’s an important implementation, so please help.

Thanks

Jay

Executing erpnext.patches.v5_0.capacity_planning in promantest.local (promantest.local)
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/promantest/frappe-bench/apps/frappe/frappe/utils/bench_helper.py”, line 77, in
main()
File “/home/promantest/frappe-bench/apps/frappe/frappe/utils/bench_helper.py”, line 14, in main
click.Group(commands=commands)(prog_name=‘bench’)
File “/home/promantest/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py”, line 664, in call
return self.main(*args, **kwargs)
File “/home/promantest/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py”, line 644, in main
rv = self.invoke(ctx)
File “/home/promantest/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py”, line 991, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File “/home/promantest/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py”, line 991, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File “/home/promantest/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py”, line 837, in invoke
return ctx.invoke(self.callback, **ctx.params)
File “/home/promantest/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py”, line 464, in invoke
return callback(*args, **kwargs)
File “/home/promantest/frappe-bench/apps/frappe/frappe/commands.py”, line 28, in _func
ret = f(frappe._dict(ctx.obj), *args, **kwargs)
File “/home/promantest/frappe-bench/apps/frappe/frappe/commands.py”, line 205, in migrate
frappe.modules.patch_handler.run_all()
File “/home/promantest/frappe-bench/apps/frappe/frappe/modules/patch_handler.py”, line 25, in run_all
if not run_single(patchmodule = patch):
File “/home/promantest/frappe-bench/apps/frappe/frappe/modules/patch_handler.py”, line 52, in run_single
return execute_patch(patchmodule, method, methodargs)
File “/home/promantest/frappe-bench/apps/frappe/frappe/modules/patch_handler.py”, line 68, in execute_patch
frappe.get_attr(patchmodule.split()[0] + “.execute”)()
File “/home/promantest/frappe-bench/apps/erpnext/erpnext/patches/v5_0/capacity_planning.py”, line 8, in execute
frappe.db.sql(“update tabStock Entry set additional_operating_cost = total_fixed_cost”)
File “/home/promantest/frappe-bench/apps/frappe/frappe/database.py”, line 143, in sql
self._cursor.execute(query)
File “/home/promantest/frappe-bench/env/local/lib/python2.7/site-packages/MySQLdb/cursors.py”, line 205, in execute
self.errorhandler(self, exc, value)
File “/home/promantest/frappe-bench/env/local/lib/python2.7/site-packages/MySQLdb/connections.py”, line 36, in defaulterrorhandler
raise errorclass, errorvalue
_mysql_exceptions.OperationalError: (1054, “Unknown column ‘total_fixed_cost’ in ‘field list’”)
Traceback (most recent call last):
File “/usr/local/bin/bench”, line 9, in
load_entry_point(‘bench==0.1’, ‘console_scripts’, ‘bench’)()
File “/home/promantest/bench-repo/bench/cli.py”, line 55, in cli
bench()
File “/usr/local/lib/python2.7/dist-packages/click/core.py”, line 664, in call
return self.main(*args, **kwargs)
File “/usr/local/lib/python2.7/dist-packages/click/core.py”, line 644, in main
rv = self.invoke(ctx)
File “/usr/local/lib/python2.7/dist-packages/click/core.py”, line 991, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File “/usr/local/lib/python2.7/dist-packages/click/core.py”, line 837, in invoke
return ctx.invoke(self.callback, **ctx.params)
File “/usr/local/lib/python2.7/dist-packages/click/core.py”, line 464, in invoke
return callback(*args, **kwargs)
File “/home/promantest/bench-repo/bench/cli.py”, line 303, in _switch_to_develop
switch_to_develop(upgrade=upgrade)
File “/home/promantest/bench-repo/bench/app.py”, line 174, in switch_to_develop
switch_branch(‘develop’, apps=apps, bench=bench, upgrade=upgrade)
File “/home/promantest/bench-repo/bench/app.py”, line 166, in switch_branch
patch_sites()
File “/home/promantest/bench-repo/bench/utils.py”, line 118, in patch_sites
run_frappe_cmd(’–site’, ‘all’, ‘migrate’, bench=bench)
File “/home/promantest/bench-repo/bench/utils.py”, line 427, in run_frappe_cmd
subprocess.check_call((f, ‘-m’, ‘frappe.utils.bench_helper’, ‘frappe’) + args, cwd=sites_dir)
File “/usr/lib/python2.7/subprocess.py”, line 540, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command ‘(’/home/promantest/frappe-bench/env/bin/python’, ‘-m’, ‘frappe.utils.bench_helper’, ‘frappe’, ‘–site’, ‘all’, ‘migrate’)’ returned non-zero exit status 1

Same error I got @jramns
I’m trying to upgrade v5 from fresh install v4

Please help…

Tks

Will push a fix soon.

Fixed the push, please try to update again.

@nabinhait,

I run bench update and…

~/frappe-bench$ bench update
Already up-to-date.
From https://github.com/frappe/erpnext

  • branch develop -> FETCH_HEAD
    Already up-to-date.
    From https://github.com/frappe/frappe
  • branch develop -> FETCH_HEAD
    Already up-to-date.
    Migrating site1.local
    Executing erpnext.patches.v5_0.rename_table_fieldnames in site1.local (1bd3e0294 d)
    /home/ubuntu/frappe-bench/apps/erpnext/erpnext/accounts/doctype/sales_taxes_and_ charges_master/sales_taxes_and_charges_master.json missing
    /home/ubuntu/frappe-bench/apps/frappe/frappe/core/doctype/purchase_taxes_and_cha rges_template/purchase_taxes_and_charges_template.json missing
    rename_field: taxes not found in Sales Taxes and Charges Master
    rename_field: territories not found in Sales Taxes and Charges Master
    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/ubuntu/frappe-bench/apps/frappe/frappe/utils/bench_helper.py”, lin e 77, in
    main()
    File “/home/ubuntu/frappe-bench/apps/frappe/frappe/utils/bench_helper.py”, lin e 14, in main
    click.Group(commands=commands)(prog_name=‘bench’)
    File “/home/ubuntu/frappe-bench/env/local/lib/python2.7/site-packages/click/co re.py”, line 664, in call
    return self.main(*args, **kwargs)
    File “/home/ubuntu/frappe-bench/env/local/lib/python2.7/site-packages/click/co re.py”, line 644, in main
    rv = self.invoke(ctx)
    File “/home/ubuntu/frappe-bench/env/local/lib/python2.7/site-packages/click/co re.py”, line 991, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
    File “/home/ubuntu/frappe-bench/env/local/lib/python2.7/site-packages/click/co re.py”, line 991, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
    File “/home/ubuntu/frappe-bench/env/local/lib/python2.7/site-packages/click/co re.py”, line 837, in invoke
    return ctx.invoke(self.callback, **ctx.params)
    File “/home/ubuntu/frappe-bench/env/local/lib/python2.7/site-packages/click/co re.py”, line 464, in invoke
    return callback(*args, **kwargs)
    File “/home/ubuntu/frappe-bench/apps/frappe/frappe/commands.py”, line 28, in _ func
    ret = f(frappe.dict(ctx.obj), *args, **kwargs)
    File “/home/ubuntu/frappe-bench/apps/frappe/frappe/commands.py”, line 205, in migrate
    frappe.modules.patch_handler.run_all()
    File “/home/ubuntu/frappe-bench/apps/frappe/frappe/modules/patch_handler.py”, line 25, in run_all
    if not run_single(patchmodule = patch):
    File “/home/ubuntu/frappe-bench/apps/frappe/frappe/modules/patch_handler.py”, line 52, in run_single
    return execute_patch(patchmodule, method, methodargs)
    File “/home/ubuntu/frappe-bench/apps/frappe/frappe/modules/patch_handler.py”, line 68, in execute_patch
    frappe.get_attr(patchmodule.split()[0] + “.execute”)()
    File “/home/ubuntu/frappe-bench/apps/erpnext/erpnext/patches/v5_0/rename_table fieldnames.py", line 235, in execute
    rename_field(dt, field[0], field[1])
    File “/home/ubuntu/frappe-bench/apps/frappe/frappe/model/init.py”, line 79 , in rename_field
    meta = frappe.get_meta(doctype, cached=False)
    File “/home/ubuntu/frappe-bench/apps/frappe/frappe/init.py”, line 506, in get_meta
    return frappe.model.meta.get_meta(doctype, cached=cached)
    File “/home/ubuntu/frappe-bench/apps/frappe/frappe/model/meta.py”, line 20, in get_meta
    return Meta(doctype)
    File “/home/ubuntu/frappe-bench/apps/frappe/frappe/model/meta.py”, line 49, in init
    super(Meta, self).init(“DocType”, doctype)
    File “/home/ubuntu/frappe-bench/apps/frappe/frappe/model/document.py”, line 76 , in init
    self.load_from_db()
    File “/home/ubuntu/frappe-bench/apps/frappe/frappe/model/meta.py”, line 54, in load_from_db
    super(Meta, self).load_from_db()
    File “/home/ubuntu/frappe-bench/apps/frappe/frappe/model/document.py”, line 10 6, in load_from_db
    frappe.throw(
    (”{0} {1} not found").format(
    (self.doctype), self.name), frap pe.DoesNotExistError)
    File “/home/ubuntu/frappe-bench/apps/frappe/frappe/init.py”, line 250, in throw
    msgprint(msg, raise_exception=exc)
    File “/home/ubuntu/frappe-bench/apps/frappe/frappe/init.py”, line 243, in msgprint
    _raise_exception()
    File “/home/ubuntu/frappe-bench/apps/frappe/frappe/init.py”, line 228, in _raise_exception
    raise raise_exception, encode(msg)
    frappe.exceptions.DoesNotExistError: DocType Purchase Taxes and Charges Template not found
    Traceback (most recent call last):
    File “/usr/local/bin/bench”, line 9, in
    load_entry_point(‘bench==0.1’, ‘console_scripts’, ‘bench’)()
    File “/home/ubuntu/bench-repo/bench/cli.py”, line 55, in cli
    bench()
    File “/usr/local/lib/python2.7/dist-packages/click/core.py”, line 664, in ca ll
    return self.main(*args, **kwargs)
    File “/usr/local/lib/python2.7/dist-packages/click/core.py”, line 644, in main
    rv = self.invoke(ctx)
    File “/usr/local/lib/python2.7/dist-packages/click/core.py”, line 991, in invo ke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
    File “/usr/local/lib/python2.7/dist-packages/click/core.py”, line 837, in invo ke
    return ctx.invoke(self.callback, **ctx.params)
    File “/usr/local/lib/python2.7/dist-packages/click/core.py”, line 464, in invo ke
    return callback(*args, **kwargs)
    File “/home/ubuntu/bench-repo/bench/cli.py”, line 247, in update
    patch_sites()
    File “/home/ubuntu/bench-repo/bench/utils.py”, line 118, in patch_sites
    run_frappe_cmd(’–site’, ‘all’, ‘migrate’, bench=bench)
    File “/home/ubuntu/bench-repo/bench/utils.py”, line 427, in run_frappe_cmd
    subprocess.check_call((f, ‘-m’, ‘frappe.utils.bench_helper’, ‘frappe’) + arg s, cwd=sites_dir)
    File “/usr/lib/python2.7/subprocess.py”, line 540, in check_call
    raise CalledProcessError(retcode, cmd)
    subprocess.CalledProcessError: Command ‘(’/home/ubuntu/frappe-bench/env/bin/pyth on’, ‘-m’, ‘frappe.utils.bench_helper’, ‘frappe’, ‘–site’, ‘all’, ‘migrate’)’ r eturned non-zero exit status 1

Try again, pushed the fix

Not working…still getting the errors

Might be some other error. please provide traceback.

~/frappe-bench$ bench update
Already up-to-date.
remote: Counting objects: 17, done.
remote: Compressing objects: 100% (17/17), done.
remote: Total 17 (delta 6), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (17/17), done.
From https://github.com/frappe/frappe
777774c…45ae299 develop -> upstream/develop
From https://github.com/frappe/erpnext

  • branch develop -> FETCH_HEAD
    Already up-to-date.
    From https://github.com/frappe/frappe
  • branch develop -> FETCH_HEAD
    Updating 777774c…45ae299
    Fast-forward
    frappe/core/doctype/doctype/doctype.py | 10 ++++++++++
    frappe/model/db_schema.py | 7 +++±–
    2 files changed, 14 insertions(+), 3 deletions(-)
    Migrating site1.local
    Executing erpnext.patches.v5_0.taxes_and_totals_in_party_currency in site1.local (1bd3e0294d)
    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/ubuntu/frappe-bench/apps/frappe/frappe/utils/bench_helper.py”, line 77, in
    main()
    File “/home/ubuntu/frappe-bench/apps/frappe/frappe/utils/bench_helper.py”, line 14, in main
    click.Group(commands=commands)(prog_name=‘bench’)
    File “/home/ubuntu/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py”, line 664, in call
    return self.main(*args, **kwargs)
    File “/home/ubuntu/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py”, line 644, in main
    rv = self.invoke(ctx)
    File “/home/ubuntu/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py”, line 991, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
    File “/home/ubuntu/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py”, line 991, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
    File “/home/ubuntu/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py”, line 837, in invoke
    return ctx.invoke(self.callback, **ctx.params)
    File “/home/ubuntu/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py”, line 464, in invoke
    return callback(*args, **kwargs)
    File “/home/ubuntu/frappe-bench/apps/frappe/frappe/commands.py”, line 28, in _func
    ret = f(frappe._dict(ctx.obj), *args, **kwargs)
    File “/home/ubuntu/frappe-bench/apps/frappe/frappe/commands.py”, line 205, in migrate
    frappe.modules.patch_handler.run_all()
    File “/home/ubuntu/frappe-bench/apps/frappe/frappe/modules/patch_handler.py”, line 25, in run_all
    if not run_single(patchmodule = patch):
    File “/home/ubuntu/frappe-bench/apps/frappe/frappe/modules/patch_handler.py”, line 52, in run_single
    return execute_patch(patchmodule, method, methodargs)
    File “/home/ubuntu/frappe-bench/apps/frappe/frappe/modules/patch_handler.py”, line 68, in execute_patch
    frappe.get_attr(patchmodule.split()[0] + “.execute”)()
    File “/home/ubuntu/frappe-bench/apps/erpnext/erpnext/patches/v5_0/taxes_and_totals_in_party_currency.py”, line 14, in execute
    update_values(dt, “Sales Taxes and Charges”)
    File “/home/ubuntu/frappe-bench/apps/erpnext/erpnext/patches/v5_0/taxes_and_totals_in_party_currency.py”, line 26, in update_values
    make_property_setter(dt, field, “precision”, net_total_precision, “Select”)
    File “/home/ubuntu/frappe-bench/apps/frappe/frappe/custom/doctype/property_setter/property_setter.py”, line 70, in make_property_setter
    property_setter.insert()
    File “/home/ubuntu/frappe-bench/apps/frappe/frappe/model/document.py”, line 194, in insert
    self.run_post_save_methods()
    File “/home/ubuntu/frappe-bench/apps/frappe/frappe/model/document.py”, line 560, in run_post_save_methods
    self.run_method(“on_update”)
    File “/home/ubuntu/frappe-bench/apps/frappe/frappe/model/document.py”, line 508, in run_method
    return Document.hook(fn)(self, *args, **kwargs)
    File “/home/ubuntu/frappe-bench/apps/frappe/frappe/model/document.py”, line 621, in composer
    return composed(self, method, *args, **kwargs)
    File “/home/ubuntu/frappe-bench/apps/frappe/frappe/model/document.py”, line 604, in runner
    add_to_return_value(self, fn(self, *args, **kwargs))
    File “/home/ubuntu/frappe-bench/apps/frappe/frappe/model/document.py”, line 502, in
    fn = lambda self, *args, **kwargs: getattr(self, method)(*args, **kwargs)
    File “/home/ubuntu/frappe-bench/apps/frappe/frappe/custom/doctype/property_setter/property_setter.py”, line 55, in on_update
    validate_fields_for_doctype(self.doc_type)
    File “/home/ubuntu/frappe-bench/apps/frappe/frappe/core/doctype/doctype/doctype.py”, line 204, in validate_fields_for_doctype
    validate_fields(frappe.get_meta(doctype))
    File “/home/ubuntu/frappe-bench/apps/frappe/frappe/core/doctype/doctype/doctype.py”, line 321, in validate_fields
    check_unique_and_text(d)
    File “/home/ubuntu/frappe-bench/apps/frappe/frappe/core/doctype/doctype/doctype.py”, line 276, in check_unique_and_text
    if d.unique and d.fieldtype in (“Text”, “Long Text”, “Small Text”, “Code”, “Text Editor”):
    AttributeError: ‘DocField’ object has no attribute ‘unique’
    Traceback (most recent call last):
    File “/usr/local/bin/bench”, line 9, in
    load_entry_point(‘bench==0.1’, ‘console_scripts’, ‘bench’)()
    File “/home/ubuntu/bench-repo/bench/cli.py”, line 55, in cli
    bench()
    File “/usr/local/lib/python2.7/dist-packages/click/core.py”, line 664, in call
    return self.main(*args, **kwargs)
    File “/usr/local/lib/python2.7/dist-packages/click/core.py”, line 644, in main
    rv = self.invoke(ctx)
    File “/usr/local/lib/python2.7/dist-packages/click/core.py”, line 991, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
    File “/usr/local/lib/python2.7/dist-packages/click/core.py”, line 837, in invoke
    return ctx.invoke(self.callback, **ctx.params)
    File “/usr/local/lib/python2.7/dist-packages/click/core.py”, line 464, in invoke
    return callback(*args, **kwargs)
    File “/home/ubuntu/bench-repo/bench/cli.py”, line 247, in update
    patch_sites()
    File “/home/ubuntu/bench-repo/bench/utils.py”, line 118, in patch_sites
    run_frappe_cmd(’–site’, ‘all’, ‘migrate’, bench=bench)
    File “/home/ubuntu/bench-repo/bench/utils.py”, line 427, in run_frappe_cmd
    subprocess.check_call((f, ‘-m’, ‘frappe.utils.bench_helper’, ‘frappe’) + args, cwd=sites_dir)
    File “/usr/lib/python2.7/subprocess.py”, line 540, in check_call
    raise CalledProcessError(retcode, cmd)
    subprocess.CalledProcessError: Command ‘(’/home/ubuntu/frappe-bench/env/bin/python’, ‘-m’, ‘frappe.utils.bench_helper’, ‘frappe’, ‘–site’, ‘all’, ‘migrate’)’ returned non-zero exit status 1

This was another error, pushed another fix.

Ran bench udpate again, and still getting same error