Skip to content

SQL 'Select/Explain' crashes because of redundant params substitution (fix provided) #383

Closed
@ghost

Description

When I click on Select or Explain SQL panel I get following error:

  File "/usr/lib/python2.6/dist-packages/django/core/handlers/base.py", line 115, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "/usr/lib/python2.6/dist-packages/django/views/decorators/csrf.py", line 77, in wrapped_view
    return view_func(*args, **kwargs)
  File "/www/redsys/core/debug_toolbar/views.py", line 35, in sql_select
    cursor.execute(sql, params)
  File "/usr/lib/pymodules/python2.6/redsys/core/debug_toolbar/utils/tracking/db.py", line 145, in execute
    self.cursor, sql, self._quote_params(params)),
  File "/usr/lib/python2.6/dist-packages/django/db/backends/mysql/base.py", line 243, in last_executed_query
    return cursor._last_executed.decode('utf-8')
  File "/usr/lib/python2.6/dist-packages/django/db/backends/util.py", line 29, in __getattr__
    return getattr(self.cursor, attr)
  File "/usr/lib/python2.6/dist-packages/django/db/backends/mysql/base.py", line 150, in __getattr__
    return getattr(self.cursor, attr)
AttributeError: 'Cursor' object has no attribute '_last_executed'
 {middleware.py:process_exception():42}

After a bit of debugging I found that DebugToolbar is trying to substitute params to Select / Explain query - but this is wrong - parameters are already substituted because query is read from form.cleaned_data.

Fix:

  • See debug_toolbar/views.py.
  • Replace params = form.cleaned_data['params'] with params = () in sql_select(), sql_explain() and probably even in sql_profile() (haven't tested)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions