Opened 14 months ago

Closed 12 months ago

Last modified 12 months ago

#22882 closed Bug (fixed)

UnicodeDecodeError in command flush

Reported by: djbaldey Owned by: fcurella
Component: Core (Management commands) Version: master
Severity: Normal Keywords: flush
Cc: Triage Stage: Accepted
Has patch: yes Needs documentation: no
Needs tests: yes Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

I use PostgreSQL in my projects. OS: GNU/Debian 7/8 on production, and Linux Mint 17 on development.
DBMS returns messages as Russian text.

djbaldey@p633m project $ ../manage.py flush
You have requested a flush of the database.
This will IRREVERSIBLY DESTROY all data currently in the u'plx_dev' database,
and return each table to the state it was in after syncdb.
Are you sure you want to do this?

    Type 'yes' to continue, or 'no' to cancel: yes
Traceback (most recent call last):
  File "../manage.py", line 60, in <module>
    execute_from_command_line(sys.argv)
  File "/home/djbaldey/env-django1.6/lib/python2.7/site-packages/django/core/management/__init__.py", line 399, in execute_from_command_line
    utility.execute()
  File "/home/djbaldey/env-django1.6/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/djbaldey/env-django1.6/lib/python2.7/site-packages/django/core/management/base.py", line 242, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/home/djbaldey/env-django1.6/lib/python2.7/site-packages/django/core/management/base.py", line 285, in execute
    output = self.handle(*args, **options)
  File "/home/djbaldey/env-django1.6/lib/python2.7/site-packages/django/core/management/base.py", line 415, in handle
    return self.handle_noargs(**options)
  File "/home/djbaldey/env-django1.6/lib/python2.7/site-packages/django/core/management/commands/flush.py", line 77, in handle_noargs
    "The full error: %s") % (connection.settings_dict['NAME'], e)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128)

Patch in django/core/management/commands/flush.py:

from django.utils.encoding import smart_text
...

"The full error: %s") % (connection.settings_dict['NAME'], smart_text(e))
...

Change History (7)

comment:1 Changed 14 months ago by claudep

  • Needs documentation unset
  • Needs tests unset
  • Patch needs improvement unset
  • Triage Stage changed from Unreviewed to Accepted

#20572 is related.

comment:2 Changed 13 months ago by djbaldey

UPD: in command dumpdata

djbaldey@p633m project $ ../manage.py dumpdata users
[Traceback (most recent call last):
  File "../manage.py", line 60, in <module>
    execute_from_command_line(sys.argv)
  File "/home/djbaldey/env-django1.6/lib/python2.7/site-packages/django/core/management/__init__.py", line 399, in execute_from_command_line
    utility.execute()
  File "/home/djbaldey/env-django1.6/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/djbaldey/env-django1.6/lib/python2.7/site-packages/django/core/management/base.py", line 249, in run_from_argv
    stderr.write('%s: %s' % (e.__class__.__name__, force_str(e)))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 30: ordinal not in range(128)

Patch in django/core/management/commands/base.py:

from django.utils.encoding import force_str, smart_text
...

stderr.write('%s: %s' % (e.__class__.__name__, smart_text(e)))
...

After:

djbaldey@p633m project $ ../manage.py dumpdata users
CommandError: Unable to serialize database: ОШИБКА:  отношение "users_permission" не существует
LINE 1: ...."built_type", "users_permission"."codename" FROM "users_per...
                                                             ^

comment:3 Changed 12 months ago by aaugustin

  • Component changed from Uncategorized to Core (Management commands)

comment:4 Changed 12 months ago by fcurella

  • Owner changed from nobody to fcurella
  • Status changed from new to assigned

comment:5 Changed 12 months ago by fcurella

  • Has patch set
  • Needs tests set
  • Version changed from 1.6 to master

I've taken the liberty to create a PR implementing the fixes mentioned in the description

https://github.com/django/django/pull/3172

comment:6 Changed 12 months ago by Tim Graham <timograham@…>

  • Resolution set to fixed
  • Status changed from assigned to closed

In 0e4d79c4f0591da3d2b0cf030cb8a79abe482345:

Fixed #22882 -- Fixed a UnicodeDecodeError in flush.

Thanks djbaldey for the report.

comment:7 Changed 12 months ago by Tim Graham <timograham@…>

In a932c596fc5bfcfcb358981540917c8d6f9dc575:

[1.7.x] Fixed #22882 -- Fixed a UnicodeDecodeError in flush.

Thanks djbaldey for the report.

Backport of 0e4d79c4f0 from master

Note: See TracTickets for help on using tickets.
Back to Top