表在PostgreSQL数据库中没有丢弃

时间:2013-02-26 19:37:26

标签: django postgresql heroku

我想在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)

更新:

我认为问题是表格首先没有丢弃,因为当我转储数据时,我仍然可以看到表格。为什么不正确地放下桌子呢?

2 个答案:

答案 0 :(得分:1)

如果您使用的是南方,则可能需要运行migrate命令。此外,如果它将迁移视为已应用,则不会重新运行它。尝试运行以下内容,然后添加输出:

heroku run python manage.py migrate

答案 1 :(得分:0)

是的,你可能没有放弃桌子,你只是认为你有。

请确保首先正确引用连接:

from django db import connection

使用django调试工具栏查看已执行的sql以及发生的事情。或者可以在heroku shell上使用像pudb这样的调试程序来查看最新情况。