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

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

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL Workbench

MySQL Workbenchは、オープンソースのデータベースモデリングツールです。ビジュアルなデータベース設計・SQL開発・サーバー設定・ユーザー管理・バックアップといった様々な管理ツールを備えます。

Django

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

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Q&A

0回答

320閲覧

django で "Unknown column 'registration_post.status_id' in 'field list'" がでます。

退会済みユーザー

退会済みユーザー

総合スコア0

MySQL Workbench

MySQL Workbenchは、オープンソースのデータベースモデリングツールです。ビジュアルなデータベース設計・SQL開発・サーバー設定・ユーザー管理・バックアップといった様々な管理ツールを備えます。

Django

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

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

0グッド

0クリップ

投稿2023/01/06 05:32

編集2023/01/06 06:24

djangoで  今まで使用していた投稿用のpost model に新たにstatus を外部キーとして追加しました。
status に手動で4つの項目を設定しました。
heroku 上で、
python manage.py makemigrations
python manage.py migrate --run-syncdb
をしたのですが、トップ url を表示するときに下記のスクリーンショットのように
OperationalError at /admin/registration/post/
(1054, "Unknown column 'registration_post.status_id' in 'field list'")
とのエラーが出ます。

既に heroku と連携した jewsDB の mysqlには、複数の投稿が status という項目の値を持たない状態で、存在しているためにエラーが起こったのだと思い、heroku に 過去のバージョンのgit branchのコードをデプロイし、投稿を全て admin から削除した後に、最新のコードでデプロイしたのですが、同じエラーが出ました。

どうすればこちらのエラーを解消できるのか
アドバイスをいただけないでしょうか?

イメージ説明
イメージ説明

python

1class Status(models.Model): 2 status = models.CharField(verbose_name='状況', max_length=20, blank=True, null=True) 3 def __str__(self): 4 return self.status 5 6 7# from django.contrib.auth.models import User 8# Create your models here. 9class Post(models.Model): 10 title=models.CharField(max_length=255) 11 due= models.DateTimeField( 12 auto_now=False, 13 editable=True, 14 blank=False, 15 null=False) 16 fromwho = models.CharField(max_length=20) 17 18 towho = models.ForeignKey( 19 Towho, 20 on_delete=models.CASCADE) 21 22 body=models.TextField() 23 posted_date=models.DateTimeField(auto_now_add=True) 24 image = CloudinaryField('image', null=True, blank=True) 25 video = CloudinaryField('video', null=True, blank=True) 26 27 status = models.ForeignKey( 28 Status, 29 verbose_name='状況', on_delete=models.PROTECT, 30 default=3)#pkが3のassigned を初期値としてセット 31

イメージ説明

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

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

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

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

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

yuma.inaura

2023/01/06 05:43

registration_post テーブルのDBでの定義はどうなってますか?
退会済みユーザー

退会済みユーザー

2023/01/06 06:17

テーブル定義の見方を調べていて遅くなりました。 workbenchで schemas > registraition_post> Colums で確認したところ status が入っていませんでした。
yuma.inaura

2023/01/06 06:18

求められてるのは status ではなく status_id じゃないでしょうか
退会済みユーザー

退会済みユーザー

2023/01/06 06:25

ありがとうございます。スクリーンショットを追加しました。 status_idもありませんでした。
退会済みユーザー

退会済みユーザー

2023/01/06 06:33

$ python manage.py migrate --fake アプリ名 zero $ python manage.py showmigrations したのですが、status_idは追加されませんでした。
退会済みユーザー

退会済みユーザー

2023/01/06 06:38

この状態でmigrationsフォルダの「init.py」ファイル以外を全部削除しましょう。 のようなことが書いてあったのですが、heroku上で JawsDBを使っているので、 どうすればいいのかがわかっていません。 
yuma.inaura

2023/01/06 06:43

migration に失敗してるんですかね 自前でカラム追加のマイグレーションファイルを作ってしまうとか…
退会済みユーザー

退会済みユーザー

2023/01/06 06:52

アドバイスありがとうございます。 今、mysql workbench から table をドロップしようとしたのですが、外部キーがあるため、 mysql> set FOREIGN_KEY_CHECKS=0; このように、制約を一時的に無くさないといけないと記事で見たのですが、 その後 tableをドロップしても、migration の問題は解決されますでしょうか?
yuma.inaura

2023/01/06 06:55

テーブルをdropしたらテーブルが無くなるだけですよね それだけではmigrationの問題解決には直結しないかと思います
退会済みユーザー

退会済みユーザー

2023/01/06 07:17

ありがとうございます。 mysql の terminal からのログインに手こずっていたのですが、マイグレーションファイルを作る方法について調べてみます。 
退会済みユーザー

退会済みユーザー

2023/01/06 07:52

ありがとうございました。 migrationsファイルを消してしまっていました。 migrations/pycache__ のみを削除するべきでした。 git からフォルダを持ってきて、 makemigrationをしたら Migrations for 'registration': registration/migrations/0017_status_post_status.py - Create model Status - Add field status to post のように出ました。
退会済みユーザー

退会済みユーザー

2023/01/06 08:12

すみません。 解決していませんでした。 heroku 上でも  python manage.py makemigrations python manage.py migrate --fake registration python manage.py migrate を行ったのですが、データベースは追加されず、エラーもそのままです。
退会済みユーザー

退会済みユーザー

2023/01/06 08:52

migrations にはこのような py fileが作成されているのですが、 まだデータベースに status_id が追加されません。 # Generated by Django 4.1.4 on 2023-01-06 07:53 from django.db import migrations, models import django.db.models.deletion class Migration(migrations.Migration): dependencies = [ ('registration', '0016_post_image_post_video'), ] operations = [ migrations.CreateModel( name='Status', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('status', models.CharField(blank=True, max_length=20, null=True, verbose_name='状況')), ], ), migrations.AddField( model_name='post', name='status', field=models.ForeignKey(default=3, on_delete=django.db.models.deletion.PROTECT, to='registration.status', verbose_name='状況'), ), ]
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問