hiramatsu0415
@hiramatsu0415

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Django Herokuのpostgresqlでvalue too long for type character varying(30)というエラーが出てしまいます。

解決したいこと

herokuのpostgresqlの設定をし、スーパーユーザーを作成しようとした際に下記のエラーが出てしまいました。

発生している問題・エラー

value too long for type character varying(30)

スクリーンショット 2021-05-31 21.51.27.png

該当するソースコード

models.py
class Users(AbstractBaseUser,PermissionsMixin ):
  email = models.EmailField(max_length=3000, unique=True)
  username = models.CharField(max_length=3000, unique=True)
  password = models.CharField(max_length=3000)
  is_active = models.BooleanField(default=True)
  is_staff = models.URLField(default=False)
  user_picture = models.FileField(upload_to='user_picture/')

  objects = UserManager()


  USERNAME_FIELD ='email' #このレコードを識別する
  REQUIRED_FIELDS =['username']#スーパーユーザー作成時に使用する

  class Meta:
    db_table='users'

  def __str__(self):
    return self.email
settings.py
 import dj_database_url
 DATABASES['default'] = dj_database_url.config(conn_max_age=600, ssl_require=True)

自分で試したこと

googleで調べてみて、
models.pyでのusernameなどのmax_length=30で短すぎたのだと思い、3000まで引き上げてみましたが、やはりこのようなエラーが出てしまいます。
どうぞよろしくお願い申し上げます。

0

2Answer

models.pyでのusernameなどのmax_length=30で短すぎたのだと思い、3000まで引き上げてみましたが、

Heroku のデータベースに対してマイグレーションは実行しましたか? models.py を書き換えたらマイグレーションを実行してデータベーススキーマに変更を適用する必要があります。手順はこのページを参照してください https://help.heroku.com/GDQ74SU2/django-migrations

0Like

@usaiさんがご指摘の通り、投稿の内容だけではマイグレートを実行されてないような気がします。
Heroku CLIがインストールされていれば、Heroku loginと入力すればブラウザで認証を求められるので、認証すればコマンドが使えるようになります。
通常ローカルではpython manage.py makemigrationsって入力するところを、
 heroku run -a アプリ名 python manage.py makemigrations
ってな具合に入力すればmakemigrationsが実行されます。以降、migrateを流した後にcreatesuperuserを実行すればオーケーのはずです。
ちなみにマイグレート実行時でエラーが出る場合は、models.pyでスキーマ定義しているアプリフォルダ配下のmigrationsフォルダに作成されている履歴ファイル(makemigrationsを実行すると自動的に作成される0001_initial.pyなど)を削除した後にデプロイするとうまくマイグレーションできた経験がありますので参考までに。

0Like

Your answer might help someone💌