質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

4778閲覧

django createsuperuserが実行できない

MikMik

総合スコア46

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/09/06 04:50

前提・実現したいこと

$ python3.6 manage.py createsuperuser

これを実行して管理者アカウントログインしたいのですが管理者アカウントを作成できませんでした

発生している問題・エラーメッセージ

Traceback (most recent call last): File "manage.py", line 15, in <module> execute_from_command_line(sys.argv) File "/usr/lib64/python3.6/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line utility.execute() File "/usr/lib64/python3.6/site-packages/django/core/management/__init__.py", line 375, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/usr/lib64/python3.6/site-packages/django/core/management/base.py", line 316, in run_from_argv self.execute(*args, **cmd_options) File "/usr/lib64/python3.6/site-packages/django/contrib/auth/management/commands/createsuperuser.py", line 59, in execute return super().execute(*args, **options) File "/usr/lib64/python3.6/site-packages/django/core/management/base.py", line 353, in execute output = self.handle(*args, **options) File "/usr/lib64/python3.6/site-packages/django/contrib/auth/management/commands/createsuperuser.py", line 112, in handle username = self.get_input_data(self.username_field, input_msg, default_username) File "/usr/lib64/python3.6/site-packages/django/contrib/auth/management/commands/createsuperuser.py", line 193, in get_input_data raw_value = input(message) UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)

試したこと

マイグレーションをしてをしてテーブルがデータベースに反映されていることは確認済みです。文字エンコードが違うとあるのでmodels.pyの上部に以下のコードを貼り付けましたが動作しませんでした。

python

1# -*- Coding: utf-8 -*-

補足情報(FW/ツールのバージョンなど)

centOS7
python3.6
Django2.1
postgreSQL9.5

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

内容としては、
postgresがutf-8でinputのデータはsjisでエンコードして取り込もうとしている。
で良いですか?
エラーとしては「utf-8にエンコードできない文字が含まれている」です。

inputがファイルなら、copy fromで実行するとエンコードエラーの行数が出力されるので、場所が特定できます。

追記

psql

追記2

PythonのUnicodeDecodeError、UnicodeEncodeErrorを正しく理解する

投稿2018/09/06 10:26

編集2018/09/07 04:54
sazi

総合スコア25138

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MikMik

2018/09/07 02:26

申し訳ございませ\。inputがファイルならというのはよく分からないです。copy fromというのはpostgresqlでデータベースをファイルからインポートするためのコマンドですよね?何のファイルから実行すればいいのでしょうか?初心者で申し訳ございませんがご返答よろしくお願い致します
sazi

2018/09/07 04:49 編集

>inputがファイルならというのはよく分からないです。 わざわざエンコードしているなら、ファイルを取り込んでの処理だと推測しました。 ファイルなら文字化けしているかどうかはテキストエディタで目見すれば分かりますけど、 件数が多い場合はそれも厳しいので、copyコマンドで取り込んで見ればどうかという提案です。
sazi

2018/09/07 04:50 編集

>何のファイルから実行すればいいのでしょうか? pgadminであればメニューからpsqlを選ぶかSQLとして直接発行もできます。 psqlで検索すればやり方は分かるかと思います。
MikMik

2018/09/07 04:16

>わざわざエンコードしているなら、ファイルを取り込んでの処理だと推測しました。 createsuperuserはDjangoの処理なのでファイルを取り込むようなことはしておりません。 sqlで直接データを挿入してみます
sazi

2018/09/07 04:55

追記しました。 追記のリンク先は、既に確認済みでしょうか?
MikMik

2018/09/07 05:06

2つ目のはまだ読んでおりませんでしたが、確認いたしました
MikMik

2018/09/07 15:35 編集

いろいろ調べてみたのですがどうやらpythonのコードがデフォルトでASCIIに変換されているのが原因のようです。原因のコードをraw_value = input(message.encode(utf-8))と変えて出力するとコマンド上には # python3.6 manage.py createsuperuser b"\xe3\x83\xa6\xe3\x83\xbc\xe3\x82\xb6\xe3\x83\xbc\xe5\x90\x8d この様に出力されてしまいます。これはcentos側の文字コードの問題でしょうか?これを変換することができません
guest

0

同様の事象になりましたが、OSのLOCALEをen_US.UTF-8>ja_JP.UTF-8に変更したところ、解決しました。
ご参考までに、、

$ locale LANG=ja_JP.UTF-8 LANGUAGE= LC_CTYPE="ja_JP.UTF-8" LC_NUMERIC="ja_JP.UTF-8" LC_TIME="ja_JP.UTF-8" LC_COLLATE="ja_JP.UTF-8" LC_MONETARY="ja_JP.UTF-8" LC_MESSAGES="ja_JP.UTF-8" LC_PAPER="ja_JP.UTF-8" LC_NAME="ja_JP.UTF-8" LC_ADDRESS="ja_JP.UTF-8" LC_TELEPHONE="ja_JP.UTF-8" LC_MEASUREMENT="ja_JP.UTF-8" LC_IDENTIFICATION="ja_JP.UTF-8" LC_ALL=

投稿2019/01/02 07:49

gotaropino

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問