在路由器上跑django时,运行syncdb命令时出现一下错误-------->
[root@DD-WRT erya]$ python2.6 manage.py syncdb Creating tables ... 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 django_content_type Creating table django_session Creating table django_site Creating table django_admin_log You just installed Django's auth system, which means you don't have any superusers defined. Would you like to create one now? (yes/no): yes Traceback (most recent call last): File "manage.py", line 10, inexecute_from_command_line(sys.argv) File "/opt/local/lib/python2.6/site-packages/django/core/management/__init__.py", line 443, in execute_from_command_line utility.execute() File "/opt/local/lib/python2.6/site-packages/django/core/management/__init__.py", line 382, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/opt/local/lib/python2.6/site-packages/django/core/management/base.py", line 196, in run_from_argv self.execute(*args, **options.__dict__) File "/opt/local/lib/python2.6/site-packages/django/core/management/base.py", line 232, in execute output = self.handle(*args, **options) File "/opt/local/lib/python2.6/site-packages/django/core/management/base.py", line 371, in handle return self.handle_noargs(**options) File "/opt/local/lib/python2.6/site-packages/django/core/management/commands/syncdb.py", line 110, in handle_noargs emit_post_sync_signal(created_models, verbosity, interactive, db) File "/opt/local/lib/python2.6/site-packages/django/core/management/sql.py", line 189, in emit_post_sync_signal interactive=interactive, db=db) File "/opt/local/lib/python2.6/site-packages/django/dispatch/dispatcher.py", line 172, in send response = receiver(signal=self, sender=sender, **named) File "/opt/local/lib/python2.6/site-packages/django/contrib/auth/management/__init__.py", line 73, in create_superuser call_command("createsuperuser", interactive=True, database=db) File "/opt/local/lib/python2.6/site-packages/django/core/management/__init__.py", line 150, in call_command return klass.execute(*args, **defaults) File "/opt/local/lib/python2.6/site-packages/django/core/management/base.py", line 232, in execute output = self.handle(*args, **options) File "/opt/local/lib/python2.6/site-packages/django/contrib/auth/management/commands/createsuperuser.py", line 70, in handle default_username = get_default_username() File "/opt/local/lib/python2.6/site-packages/django/contrib/auth/management/__init__.py", line 105, in get_default_username default_username = get_system_username() File "/opt/local/lib/python2.6/site-packages/django/contrib/auth/management/__init__.py", line 85, in get_system_username return getpass.getuser().decode(locale.getdefaultlocale()[1]) TypeError: decode() argument 1 must be string, not None
初步断定decode()的话,问题应该出现在语言编码的问题,想到了环境变量,于是设置:
[root@DD-WRT erya]$ export LC_ALL=en_US.UTF-8 [root@DD-WRT erya]$ python2.6 manage.py syncdb Creating tables ... Installing custom SQL ... Installing indexes ... Installed 0 object(s) from 0 fixture(s)
创建superuser:
[root@DD-WRT erya]$ python2.6 manage.py createsuperuser Username (leave blank to use 'root'): shi E-mail address: er@126.com Password: Password (again): Superuser created successfully.
BUG除掉!!!将export LC_ALL=en_US.UTF-8写入到profile或者.bashrc中即可。
引用:
The immediate resolution for this, assuming you are using bash as your shell:
$ export LC_ALL=en_US.UTF-8
$ export LANG=en_US.UTF-8
This will set your locale for that session, and syncdb will work. You can add this to your profile and make it permanent for your shells.
You can use the locale
command to see the current settings, and locale -a
to see what locales are available to you. en_US.UTF-8
is a generic safe one, but you may have other preferences.