Opened 4 years ago

Closed 4 years ago

Last modified 3 years ago

#15162 closed Bug (duplicate)

syncdb fails when creating super user - Django: v 1.2.4 Python: 2.6 MySQL Server: 5.5 Windows 7 Extra: MySQL-Python v1.2.3

Reported by: david_heagney Owned by: nobody
Component: Database layer (models, ORM) Version: 1.3
Severity: Normal Keywords: syncdb mysql
Cc: Triage Stage: Accepted
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: yes
Easy pickings: UI/UX:

Description (last modified by ramiro)

syncdb fails when creating super user - Django: v 1.2.4 Python: 2.6 MySQL Server: 5.5 Windows 7 Extra: MySQL-Python v1.2.3

What steps will reproduce the problem?

  1. install the above programs
  2. create a project
  3. run syncdb

Note: I have installed mySQL to support UTF 8. I also create the
mysite_db database using CREATE DTABASE mysite_db CHARACTER SET =
UTF8;

What is the expected output? What do you see instead?

syncdb create the required tables as follows:

---------------------------------------------------------------------------------------------------------------------

C:\DjangoProjects\mysite>python manage.py syncdb
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_user_permissions
Creating table auth_user_groups
Creating table auth_user
Creating table auth_message
Creating table django_content_type
Creating table django_session
Creating table django_site

You just installed Django's auth system, which means you don't have
any superuse
rs defined.
Would you like to create one now? (yes/no):

---------------------------------------------------------------------------------------------------------------------

I select 'YES' and get the following error:

---------------------------------------------------------------------------------------------------------------------

Traceback (most recent call last):
 File "manage.py", line 11, in <module>
   execute_manager(settings)
 File "C:\Python26\lib\site-packages\django\core\management
\__init__.py", line
438, in execute_manager
   utility.execute()
 File "C:\Python26\lib\site-packages\django\core\management
\__init__.py", line
379, in execute
   self.fetch_command(subcommand).run_from_argv(self.argv)
 File "C:\Python26\lib\site-packages\django\core\management\base.py",
line 191,
 in run_from_argv
   self.execute(*args, **options.__dict__)
 File "C:\Python26\lib\site-packages\django\core\management\base.py",
line 220,
 in execute
   output = self.handle(*args, **options)
 File "C:\Python26\lib\site-packages\django\core\management\base.py",
line 351,
 in handle
   return self.handle_noargs(**options)
 File "C:\Python26\lib\site-packages\django\core\management\commands
\syncdb.py"
, line 103, in handle_noargs
   emit_post_sync_signal(created_models, verbosity, interactive, db)
 File "C:\Python26\lib\site-packages\django\core\management\sql.py",
line 182,
in emit_post_sync_signal
   interactive=interactive, db=db)
 File "C:\Python26\lib\site-packages\django\dispatch\dispatcher.py",
line 172,
in send
   response = receiver(signal=self, sender=sender, **named)
 File "C:\Python26\lib\site-packages\django\contrib\auth\management
\__init__.py
", line 44, in create_superuser
   call_command("createsuperuser", interactive=True)
 File "C:\Python26\lib\site-packages\django\core\management
\__init__.py", line
166, in call_command
   return klass.execute(*args, **defaults)
 File "C:\Python26\lib\site-packages\django\core\management\base.py",
line 220,
 in execute
   output = self.handle(*args, **options)
 File "C:\Python26\lib\site-packages\django\contrib\auth\management
\commands\cr
eatesuperuser.py", line 71, in handle
   User.objects.get(username=default_username)
 File "C:\Python26\lib\site-packages\django\db\models\manager.py",
line 132, in
 get
   return self.get_query_set().get(*args, **kwargs)
 File "C:\Python26\lib\site-packages\django\db\models\query.py", line
342, in g
et
   num = len(clone)
 File "C:\Python26\lib\site-packages\django\db\models\query.py", line
80, in __
len__
   self._result_cache = list(self.iterator())
 File "C:\Python26\lib\site-packages\django\db\models\query.py", line
271, in i
terator
   for row in compiler.results_iter():
 File "C:\Python26\lib\site-packages\django\db\models\sql
\compiler.py", line 67
7, in results_iter
   for rows in self.execute_sql(MULTI):
 File "C:\Python26\lib\site-packages\django\db\models\sql
\compiler.py", line 73
2, in execute_sql
   cursor.execute(sql, params)
 File "C:\Python26\lib\site-packages\django\db\backends\util.py",
line 15, in e
xecute
   return self.cursor.execute(sql, params)
 File "C:\Python26\lib\site-packages\django\db\backends\mysql
\base.py", line 86
, in execute
   return self.cursor.execute(query, args)
 File "C:\Python26\lib\site-packages\MySQLdb\cursors.py", line 175,
in execute
   if not self._defer_warnings: self._warning_check()
 File "C:\Python26\lib\site-packages\MySQLdb\cursors.py", line 89, in
_warning_
check
   warn(w[-1], self.Warning, 3)
_mysql_exceptions.Warning: Incorrect string value: '\xED' for column
'username' 
at row 1

---------------------------------------------------------------------------------------------------------------------

What version of the product are you using? On what operating system?

Django: v 1.2.4 Python: 2.6 MySQL Server: 5.5 Windows 7 Extra: MySQL-Python v1.2.3

Please provide any additional information below.

I also have mySQL C++ and ODBC database connectors installed. Any help is greatly appreciated.

Change History (7)

comment:1 Changed 4 years ago by david_heagney

  • Needs documentation unset
  • Needs tests unset
  • Patch needs improvement unset

Note: I have confirmed the mySQL DB is UTF-8. I deleted and recreated using < CREATE DATABASE mysite_db DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;> and got the same error. Thanks.

comment:2 Changed 4 years ago by ramiro

  • Description modified (diff)

[Re-formatted output, please use the ' Preview' button at least once before submitting the ticket, use WikiFormatting when creating the description and try to paste a well formatted Python traceback from your OS console screen (in the one you pasted each line is broken in three lines and it dificutls its reading)]

comment:3 Changed 4 years ago by jezdez

  • Resolution set to worksforme
  • Status changed from new to closed

I couldn't reproduce this on Windows, http://d.pr/pO9N

comment:4 Changed 4 years ago by pawel.krzyzaniak@…

  • Has patch set
  • Resolution worksforme deleted
  • Severity set to Normal
  • Status changed from closed to reopened
  • Type set to Uncategorized
  • Version changed from 1.2 to 1.3

I had the same problem - it is caused by non-ascii characters in the Windows username (in my case the username is Paweł).

quick fix (just ignoring the non-ascii character):

contrib\auth\management\commands\createsuperuser.py, line 61:
++default_username = getpass.getuser().replace(' ', ).decode('ascii','ignore').lower()
--default_username = getpass.getuser().replace(' ',
).lower()

comment:5 Changed 4 years ago by lukeplant

  • Patch needs improvement set
  • Triage Stage changed from Unreviewed to Accepted
  • Type changed from Uncategorized to Bug

Patch needs improvement - there is no reason we can't use non ASCII in usernames. The problem is probably that the getpass.getuser() is returning a byte string, rather than a unicode object. This presumably needs to take the locale into account, probably using locale.getdefaultlocale(). That should work on Linux, I don't know about Windows.

comment:6 Changed 4 years ago by kmtracey

  • Resolution set to duplicate
  • Status changed from reopened to closed

This is the same as #15778 which is newer but has discussion of a proper fix, so I'm closing this a dupe of that.

comment:7 Changed 3 years ago by jacob

  • milestone 1.3 deleted

Milestone 1.3 deleted

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