1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

herokuでDjangoブログにログイン機能を付けようとしたらハマった

Posted at

今回はDjangoのソースコードにあまり触れず、状況だけ簡単に説明しようと思います。

虫のいい話ですが、知識のある方に助けていただきたくて投稿していますので対処法が分かる方はどうかお助けください。

これの続きでページにログイン機能を付けようとしていたらハマった。

まずはローカル環境で作業。データベースは”sqlite3”を使用している。
詳しい説明は省くが、とりあえず編集・削除は投稿者でないとできないようにしたかったので、Entryモデルに投稿したユーザーのデータを追加して参照できるようにした。

models.py
from django.contrib.auth.models import User

class Entry(models.Model):
	title = models.CharField(max_length=150)
	body = models.TextField()
	create_datetime = models.DateTimeField(auto_now_add=True)
	update_datetime = models.DateTimeField(auto_now=True)
	owner = models.ForeignKey(User)  #ここ

その後python manage.py syncdbを実行してデータベースを更新。うまくいったように見えたのだが、いざrunserverでローカル環境のテストページにアクセスするとエラーだった。

no such column: owner_id

うろ覚えだがたしかこんな感じ。
以下のページを参考に’drop table’してから再度’syncdb’したところ解決。
http://stackoverflow.com/questions/7218590/caught-databaseerror-while-rendering-no-such-column-bookmarks-bookmark-title

で、他には特に問題なくプログラムも動いていたので、herokuにpush。
heroku run python manage.py syncdbでデータベースも更新。こちらはPostgreSQL。

で、アクセスしてみるとエラー。エラーメッセージをメモし忘れていたが、たしかローカル環境で起こったのと似ていたか、あるいは同じだったような気がする。
だから対処法もだいたい同じだろうと思い、heroku run postgresqlを実行。

bash: postgresql: command not found

・・・・アクセスの仕方が分からなかったので、「GUIから消せばいいや」とherokuのアプリケーションページへ。

”Add-ons"の右端にある「×」マークで消した。

その後、同じページの"Get Add-ons"からアプリケーションに向けてPostgreSQLを改めてAdd。

heroku run python manage.py syncdbを実行すると、

Running python manage.py syncdb attached to terminal... up, run.1453
Creating tables ...
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)

うまくいったかと思いきや、ページにアクセスすると正体不明のエラーになった。

OperationalError at /

FATAL: role "ognimhmmzwucqv" is not permitted to log in

現場:http://thawing-shelf-8495.herokuapp.com/

そこで、現状のモデル設定がどんな内容なのかを確認するため、heroku run python manage.py sql [appname]を実行。

すると、いかにも「失敗しました」という感じでログがずらっと出てくる。
一番下にエラーメッセージを発見。

django.db.utils.OperationalError: FATAL: role "ognimhmmzwucqv" is not permitted to log in

"ognimhmmzwucqv”という文字列は不可解さ加減からするとIDか何かだと思われるのだが、データベースのIDだろうか?新しいデータベースのアクセス権減がないと言われてる気がする。

というか、たった今ふと間違いに気付いた。

テーブルでなくてデータベースそのものを消してるじゃないか。

かなりの確率でそれが今回の要因・・・・・どなたかアドバイスをお願いします。

1
2
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?