Django Girls Tutorialでmigrateできない

Pocket

Django Girls TutorialでHerokuへのデプロイをやったときのこと。

heroku run python manage.py migrate

は成功するのですが、

heroku run python manage.py createsuperuserがエラーになりました。

auth_nameが無いといわれます。no such tableだそうです。このようなエラーが出ます。

You have 14 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, blog, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

Traceback (most recent call last):
  File "/app/.heroku/python/lib/python3.6/site-packages/django/db/backends/utils.py", line 65, in execute
    return self.cursor.execute(sql, params)
  File "/app/.heroku/python/lib/python3.6/site-packages/django/db/backends/sqlite3/base.py", line 328, in execute
    return Database.Cursor.execute(self, query, params)
sqlite3.OperationalError: no such table: auth_user

原因は、.gitignoreのlocal_settings.pyをsetingとミススペルしていたことでした。

Django Girls Tutorialでは、local_settings.pyがあればローカルのSqlite3を使い、herokuにはこのファイルをpushしないことでPostgreSQLを使うことにしています。

ところが、.gitignoreで指定できなかったため、herokuの方にlocal_settings.pyが転送されて、データベースとしてSqlite3が使われることになってしまいました。migrate時にエラーにならないのですが、データベースファイルができないらしく、tableがないというエラーになっていました。

リモートのファイルのみを消すには、

git rm --cached mysite/local_settings.py

git commit -m "Deleted remote local_settings.py."

git push heroku master

で消すことができました。

デプロイするだけでもいろいろトラブルになるんですね。

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください