求助: django 部署在 heroku , 数据库出问题, 想知道在 免费版的 heroku app 上 如何管理数据库

2015-07-05 08:55:03 +08:00
 raiz
1. 我开发环境是 python34 django 1.8.1
2. 本地用数据库是 sqlite3, heroku 用到 postgres
3. 我部署在heroku上是给另一个人测试用的,由于一直变更需求,表结构要变
4. 我情景是,我之前的工程已经在 herok 上跑,没有问题, 然后我在 model中添加了一个 class Message(models.Model): user = models.ForeignKey('GameUser') 而 GameUser 是原来有的一个model
5. 然后我push了,然后在heroku 上执行

python manage.py makemigrations
python manage.py migrate
然后进入 python manage.py shell , 导入model后, 执行 Message.objects.all() ,提示上面的提问里错误

Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/app/.heroku/pythonb/python3.4/site-packages/django/models/query.py", line 138, in __repr__
data = list(self[:REPR_OUTPUT_SIZE + 1])
File "/app/.heroku/pythonb/python3.4/site-packages/django/models/query.py", line 162, in __iter__
self._fetch_all()
File "/app/.heroku/pythonb/python3.4/site-packages/django/models/query.py", line 965, in _fetch_all
self._result_cache = list(self.iterator())
File "/app/.heroku/pythonb/python3.4/site-packages/django/models/query.py", line 238, in iterator
results = compiler.execute_sql()
File "/app/.heroku/pythonb/python3.4/site-packages/django/modelsl/compiler.py", line 837, in execute_sql
cursor.execute(sql, params)
File "/app/.heroku/pythonb/python3.4/site-packages/django/backends/utils.py", line 64, in execute
return self.cursor.execute(sql, params)
File "/app/.heroku/pythonb/python3.4/site-packages/django/utils.py", line 97, in __exit__
six.reraise(dj_exc_type, dj_exc_value, traceback)
File "/app/.heroku/pythonb/python3.4/site-packages/django/utils/six.py", line 658, in reraise
raise value.with_traceback(tb)
File "/app/.heroku/pythonb/python3.4/site-packages/django/backends/utils.py", line 64, in execute
return self.cursor.execute(sql, params)
django.db.utils.ProgrammingError: relation "dbmanager_message" does not exist
LINE 1: ..."msg_code", "dbmanager_message"."parameters" FROM "dbmanager...

然而执行 GameUser.objects.all() 并不会报错
5663 次点击
所在节点    Heroku
4 条回复
fuermosi777
2015-07-05 11:30:10 +08:00
可以直接psql连到heroku app的数据库里添表
raiz
2015-07-05 12:51:28 +08:00
@fuermosi777 谢谢指点 是指本地下载 psql , 然后远程连接到 heroku的数据库吗? 我的表里很多字段,是不是要写很多sql语句?
fuermosi777
2015-07-05 21:58:27 +08:00
我以前用1.6的时候 是psql直接连heroku数据库 然后本地运行一下`python manage.py sqlall app`,自动生成添加字段或者表的sql语句,然后复制到psql里运行一下就好了。好像自从Django1.8以后添加了migration功能。但由于模型不是经常修改,所以直接修改的方法并不是很麻烦。
raiz
2015-07-06 00:11:38 +08:00
@fuermosi777 最后采用了 本地使用 postgres, pg_dump 为 txt文件, 然使用 heroku 的pg:backup restore 为远程数据库

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/203399

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX