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.

Reply via email to