I'm not really using memberships and I have auto group creation turned off:
auth.settings.create_user_groups = False It works OK in my dev environment so it has something to do with my production data. One thing I noticed is that it looks like it might be trying to validate NOT_IN_DB. Since it's a Profile update, it should certainly account for the current auth_user's email already being in the DB. *File /opt/web2py/gluon/validators.py in __call__ at line 549* code arguments variables Function argument list (self=<gluon.validators.IS_NOT_IN_DB object>, value='pb@com') Code listing 544. 545. 546. 547. 548. 549. 550. 551. 552. 553. if len(rows) > 0: if isinstance(self.record_id, dict): for f in self.record_id: if str(getattr(rows[0], f)) != str(self.record_id[f]): return (value, translate(self.error_message)) elif str(rows[0]._id) != str(self.record_id): return (value, translate(self.error_message)) return (value, None)