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

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

ただいまの
回答率

87.48%

DjangoでHerokuに最初にデプロイした後にmigrateができない。

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 893

score 88

heroku run python manage.py migrate でエラーになる

今まで、ローカル環境でずっと開発してきて、形になってきたのでherokuにデプロイしようとしています。
そこでこちらのQiita記事DjangoアプリをHerokuにデプロイする方法の手順通りに進めてデプロイしました。

最後の方の、

heroku run python manage.py migrate


を実行するところで下記のようなエラーが出てしまいmigrateできません。
スーパーユーザーを作るコマンドは問題なく実行できました。

エラーメッセージ

Operations to perform:
  Apply all migrations: admin, auth, contenttypes, doors, sessions
Running migrations:
  Applying doors.0003_auto_20190912_0307...Traceback (most recent call last):
  File "manage.py", line 21, in <module>
    main()
  File "manage.py", line 17, in main
    execute_from_command_line(sys.argv)
  File "/app/.heroku/python/lib/python3.7/site-packages/django/core/management/__init__.py", line 381, in
execute_from_command_line
    utility.execute()
  File "/app/.heroku/python/lib/python3.7/site-packages/django/core/management/__init__.py", line 375, in
execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/app/.heroku/python/lib/python3.7/site-packages/django/core/management/base.py", line 323, in run_
from_argv
    self.execute(*args, **cmd_options)
  File "/app/.heroku/python/lib/python3.7/site-packages/django/core/management/base.py", line 364, in exec
ute
    output = self.handle(*args, **options)
  File "/app/.heroku/python/lib/python3.7/site-packages/django/core/management/base.py", line 83, in wrapp
ed
    res = handle_func(*args, **kwargs)
  File "/app/.heroku/python/lib/python3.7/site-packages/django/core/management/commands/migrate.py", line
234, in handle
    fake_initial=fake_initial,
  File "/app/.heroku/python/lib/python3.7/site-packages/django/db/migrations/executor.py", line 117, in mi
grate
    state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, fake_initial=fake_initial)
  File "/app/.heroku/python/lib/python3.7/site-packages/django/db/migrations/executor.py", line 147, in _m
igrate_all_forwards
    state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial)
  File "/app/.heroku/python/lib/python3.7/site-packages/django/db/migrations/executor.py", line 245, in ap
ply_migration
    state = migration.apply(state, schema_editor)
  File "/app/.heroku/python/lib/python3.7/site-packages/django/db/migrations/migration.py", line 124, in a
pply
    operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
  File "/app/.heroku/python/lib/python3.7/site-packages/django/db/migrations/operations/fields.py", line 2
49, in database_forwards
    schema_editor.alter_field(from_model, from_field, to_field)
  File "/app/.heroku/python/lib/python3.7/site-packages/django/db/backends/base/schema.py", line 535, in a
lter_field
    old_db_params, new_db_params, strict)
  File "/app/.heroku/python/lib/python3.7/site-packages/django/db/backends/postgresql/schema.py", line 124
, in _alter_field
    new_db_params, strict,
  File "/app/.heroku/python/lib/python3.7/site-packages/django/db/backends/base/schema.py", line 649, in _
alter_field
    new_default = self.effective_default(new_field)
  File "/app/.heroku/python/lib/python3.7/site-packages/django/db/backends/base/schema.py", line 233, in e
ffective_default
    return field.get_db_prep_save(self._effective_default(field), self.connection)
  File "/app/.heroku/python/lib/python3.7/site-packages/django/db/models/fields/__init__.py", line 789, in
 get_db_prep_save
    return self.get_db_prep_value(value, connection=connection, prepared=False)
  File "/app/.heroku/python/lib/python3.7/site-packages/django/db/models/fields/__init__.py", line 1275, i
n get_db_prep_value
    value = self.get_prep_value(value)
  File "/app/.heroku/python/lib/python3.7/site-packages/django/db/models/fields/__init__.py", line 1270, i
n get_prep_value
    return self.to_python(value)
  File "/app/.heroku/python/lib/python3.7/site-packages/django/db/models/fields/__init__.py", line 1245, i
n to_python
    params={'value': value},
django.core.exceptions.ValidationError: ["'' は無効な日付形式です。YYYY-MM-DD形式にしなければなりません。"
]

試したこと・考えたこと

モデルの中に何か変な値が入っていたかなと思い、ローカルのdjango shell上で一覧を表示してすべてのフィールドを確認しましたが、いずれも2019-04-22のような形式で入っていました。

またmodels.pyも、これまでは引数に何も書いていませんでしたが、blankやnullをTrueにしてみたりしましたが変わりませんでした。モデルは下記のような感じです。

class Theater(models.Model):
    name = models.CharField(max_length=50)
    site_url = models.CharField(max_length=100)
    description = models.TextField(null=True)
    favorited = models.IntegerField(default=0, blank=True)
    address = models.CharField(max_length=200)

    def publish(self):
        self.save()

    def __str__(self):
        return self.name


class Program(models.Model):
    title = models.CharField(max_length=100)
    company = models.CharField(max_length=50)
    theater = models.ForeignKey(Theater, on_delete=models.PROTECT)
    playwright = models.CharField(max_length=200, null=True)
    introduction = models.CharField(max_length=300, null=True)
    # この下二つがDateField
    start_date = models.DateField(blank=True, null=True)
    close_date = models.DateField(blank=True, null=True)
    site_url = models.CharField(blank=True, null=True, max_length=200)
    description = models.TextField(blank=True)
    favorited = models.IntegerField(default=0, blank=True)
    flyer_image = models.ImageField(blank=True, null=True, upload_to="flyers")

    def publish(self):
        self.save()

    def __str__(self):
        return self.title

このエラーの内容と解決方法があれば、お教えいただきたいです。
どうぞよろしくお願いいたします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

check解決した方法

0

結局アプリを作り直しました。
たぶんmigrationファイルがごちゃごちゃしていたせいかとおもうのですが、よくわかりませんでした。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 87.48%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る