我想在Heroku的Postgres数据库中删除一个表。但是我还没有把头包裹在南方,所以我决定写一个函数:
def dropTable(request):
cursor = connection.cursor()
cursor.execute("DROP TABLE books_request CASCADE;")
success = simplejson.dumps({"success":"success",})
return HttpResponse(success, mimetype="application/json")
所以现在我的books_request table
已被删除。
然后我在Heroku上为我的应用程序进入bash,我做python manage.py syncdb
希望它能重新创建表,但似乎没有。为什么呢?
有没有办法强制同步该应用程序?
我也收到了此错误消息,这可能是同步时问题的一部分:
Problem installing fixture '/app/bookstore/fixtures/initial_data.json': Traceback (most recent call last):
DatabaseError: Could not load sites.Site(pk=1): value too long for type character varying(50)
更新:
我认为问题是表格首先没有丢弃,因为当我转储数据时,我仍然可以看到表格。为什么不正确地放下桌子呢?
答案 0 :(得分:1)
如果您使用的是南方,则可能需要运行migrate命令。此外,如果它将迁移视为已应用,则不会重新运行它。尝试运行以下内容,然后添加输出:
heroku run python manage.py migrate
答案 1 :(得分:0)
是的,你可能没有放弃桌子,你只是认为你有。
请确保首先正确引用连接:
from django db import connection
使用django调试工具栏查看已执行的sql以及发生的事情。或者可以在heroku shell上使用像pudb这样的调试程序来查看最新情况。