I believe I have a fix we can put in for the upcoming Review Board 2.5.8 release for the warning.
Christian -- Christian Hammond President/CEO of Beanbag <https://www.beanbaginc.com/> Makers of Review Board <https://www.reviewboard.org/> On Sat, Jan 14, 2017 at 2:29 PM, Christian Hammond <christ...@beanbaginc.com > wrote: > I've seen this. This is a behavioral quirk in MySQL. > > Basically, this is likely a longblob, but some versions of MySQL assume > the incoming content should be Unicode text and does validation on that. > The validation fails, and you get the warning you have above: > > /usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/base.py:129: > Warning: Invalid utf8 character string: 'AAF744' > return self.cursor.execute(query, args) > > > Another user hit this with MySQL 5.5. Upgrading to 5.6 solved this for > him, but you're on 5.7, so I guess this wasn't "fixed." > > There is a proper fix that Django's put in place, based on the > recommendations of the MySQL developers. However, we're not able to use > that newer version of Django... Been meaning to see if we can monkey-patch > the fix in. > > This is MySQL warning code 1300. You can see some discussion about this > here: https://bugs.mysql.com/bug.php?id=79317 > > Now, if you don't enable DEBUG = True in settings_local.py, then this > warning is harmless. So I suspect your Default Reviewer issue is a > configuration issue. > > Can you show me what your Default Reviewer configuration looks like? > > Christian > > > -- > Christian Hammond > President/CEO of Beanbag <https://www.beanbaginc.com/> > Makers of Review Board <https://www.reviewboard.org/> > > On Fri, Jan 13, 2017 at 11:59 AM, David Trowbridge <trowb...@gmail.com> > wrote: > >> Something is super weird with your database schema. The "binary" field of >> that table should be a longblob, not text (and therefore shouldn't care at >> all about encodings one way or another). Can you pull out the schema and >> send it here? >> >> -David >> >> On Fri, Jan 13, 2017 at 9:08 AM Shooter Gravatar < >> shooter.grava...@gmail.com> wrote: >> >>> Another update. >>> >>> I completely remove ReviewBoard 2.5.7 from my system and downloaded >>> again 2.5.6.1 with easy_install. >>> Run the installation again. >>> Same configuration as before. >>> I can now create a review request from the UI by browsing the commits on >>> my repo, and the default reviewer rule is applied (the group is assigned to >>> the request i just created). >>> But i still have the utf8 error on the database. >>> >>> I now have another problem : i cannot acces the >>> /reviewboard/admin/settings/general/ page on the Admin dashboard. >>> >>> >>> Traceback (most recent call last): >>> >>> >>> >>> File >>> "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", >>> line 112, in get_response >>> >>> response = wrapped_callback(request, *callback_args, >>> **callback_kwargs) >>> >>> >>> >>> File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py", >>> line 99, in _wrapped_view >>> >>> response = view_func(request, *args, **kwargs) >>> >>> >>> >>> File >>> "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/views/decorators.py", >>> line 17, in _checklogin >>> >>> return view_func(request, *args, **kwargs) >>> >>> >>> >>> File "/usr/local/lib/python2.7/dist-packages/ReviewBoard-2.5.6.1- >>> py2.7.egg/reviewboard/admin/views.py", line 138, in site_settings >>> >>> 'root_path': settings.SITE_ROOT + "admin/db/" >>> >>> >>> >>> File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py", >>> line 99, in _wrapped_view >>> >>> response = view_func(request, *args, **kwargs) >>> >>> >>> >>> File >>> "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/views/decorators.py", >>> line 17, in _checklogin >>> >>> return view_func(request, *args, **kwargs) >>> >>> >>> >>> File "/usr/local/lib/python2.7/dist-packages/djblets/siteconfig/views.py", >>> line 63, in site_settings >>> >>> return render_to_response(template_name, RequestContext(request, >>> context)) >>> >>> >>> >>> File >>> "/usr/local/lib/python2.7/dist-packages/django/shortcuts/__init__.py", >>> line 29, in render_to_response >>> >>> return HttpResponse(loader.render_to_string(*args, **kwargs), >>> **httpresponse_kwargs) >>> >>> >>> >>> File "/usr/local/lib/python2.7/dist-packages/django/template/loader.py", >>> line 164, in render_to_string >>> >>> return t.render(Context(dictionary)) >>> >>> >>> >>> File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", >>> line 140, in render >>> >>> return self._render(context) >>> >>> >>> >>> File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", >>> line 134, in _render >>> >>> return self.nodelist.render(context) >>> >>> >>> >>> File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", >>> line 840, in render >>> >>> bit = self.render_node(node, context) >>> >>> >>> >>> File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", >>> line 854, in render_node >>> >>> return node.render(context) >>> >>> >>> >>> File >>> "/usr/local/lib/python2.7/dist-packages/django/template/loader_tags.py", >>> line 123, in render >>> >>> return compiled_parent._render(context) >>> >>> >>> >>> File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", >>> line 134, in _render >>> >>> return self.nodelist.render(context) >>> >>> >>> >>> File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", >>> line 840, in render >>> >>> bit = self.render_node(node, context) >>> >>> >>> >>> File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", >>> line 854, in render_node >>> >>> return node.render(context) >>> >>> >>> >>> File >>> "/usr/local/lib/python2.7/dist-packages/django/template/loader_tags.py", >>> line 123, in render >>> >>> return compiled_parent._render(context) >>> >>> >>> >>> File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", >>> line 134, in _render >>> >>> return self.nodelist.render(context) >>> >>> >>> >>> File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", >>> line 840, in render >>> >>> bit = self.render_node(node, context) >>> >>> >>> >>> File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", >>> line 854, in render_node >>> >>> return node.render(context) >>> >>> >>> >>> File >>> "/usr/local/lib/python2.7/dist-packages/django/template/loader_tags.py", >>> line 123, in render >>> >>> return compiled_parent._render(context) >>> >>> >>> >>> File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", >>> line 134, in _render >>> >>> return self.nodelist.render(context) >>> >>> >>> >>> File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", >>> line 840, in render >>> >>> bit = self.render_node(node, context) >>> >>> >>> >>> File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", >>> line 854, in render_node >>> >>> return node.render(context) >>> >>> >>> >>> File >>> "/usr/local/lib/python2.7/dist-packages/django/template/loader_tags.py", >>> line 123, in render >>> >>> return compiled_parent._render(context) >>> >>> >>> >>> File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", >>> line 134, in _render >>> >>> return self.nodelist.render(context) >>> >>> >>> >>> File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", >>> line 840, in render >>> >>> bit = self.render_node(node, context) >>> >>> >>> >>> File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", >>> line 854, in render_node >>> >>> return node.render(context) >>> >>> >>> >>> File >>> "/usr/local/lib/python2.7/dist-packages/django/template/loader_tags.py", >>> line 62, in render >>> >>> result = block.nodelist.render(context) >>> >>> >>> >>> File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", >>> line 840, in render >>> >>> bit = self.render_node(node, context) >>> >>> >>> >>> File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", >>> line 854, in render_node >>> >>> return node.render(context) >>> >>> >>> >>> File >>> "/usr/local/lib/python2.7/dist-packages/django/template/loader_tags.py", >>> line 62, in render >>> >>> result = block.nodelist.render(context) >>> >>> >>> >>> File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", >>> line 840, in render >>> >>> bit = self.render_node(node, context) >>> >>> >>> >>> File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", >>> line 854, in render_node >>> >>> return node.render(context) >>> >>> >>> >>> File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", >>> line 891, in render >>> >>> output = self.filter_expression.resolve(context) >>> >>> >>> >>> File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", >>> line 585, in resolve >>> >>> obj = self.var.resolve(context) >>> >>> >>> >>> File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", >>> line 735, in resolve >>> >>> value = self._resolve_lookup(context) >>> >>> >>> >>> File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", >>> line 789, in _resolve_lookup >>> >>> current = current() >>> >>> >>> >>> File "/usr/local/lib/python2.7/dist-packages/django/forms/forms.py", >>> line 249, in non_field_errors >>> >>> return self.errors.get(NON_FIELD_ERRORS, self.error_class()) >>> >>> >>> >>> File "/usr/local/lib/python2.7/dist-packages/django/forms/forms.py", >>> line 121, in errors >>> >>> self.full_clean() >>> >>> >>> >>> File "/usr/local/lib/python2.7/dist-packages/ReviewBoard-2.5.6.1- >>> py2.7.egg/reviewboard/admin/forms.py", line 263, in full_clean >>> >>> cache_type = self['cache_type'].data or self['cache_type'].initial >>> >>> >>> >>> AttributeError: 'BoundField' object has no attribute 'initial' >>> >>> >>> -- >>> Supercharge your Review Board with Power Pack: >>> https://www.reviewboard.org/powerpack/ >>> Want us to host Review Board for you? Check out RBCommons: >>> https://rbcommons.com/ >>> Happy user? Let us know! https://www.reviewboard.org/users/ >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "reviewboard" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to reviewboard+unsubscr...@googlegroups.com. >>> For more options, visit https://groups.google.com/d/optout. >>> >> -- >> Supercharge your Review Board with Power Pack: >> https://www.reviewboard.org/powerpack/ >> Want us to host Review Board for you? Check out RBCommons: >> https://rbcommons.com/ >> Happy user? Let us know! https://www.reviewboard.org/users/ >> --- >> You received this message because you are subscribed to the Google Groups >> "reviewboard" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to reviewboard+unsubscr...@googlegroups.com. >> For more options, visit https://groups.google.com/d/optout. >> > > -- Supercharge your Review Board with Power Pack: https://www.reviewboard.org/powerpack/ Want us to host Review Board for you? Check out RBCommons: https://rbcommons.com/ Happy user? Let us know! https://www.reviewboard.org/users/ --- You received this message because you are subscribed to the Google Groups "reviewboard" group. To unsubscribe from this group and stop receiving emails from it, send an email to reviewboard+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.