0

我想在 Heroku 上的 Postgres 数据库中删除一个表。但是我还没有完全了解 South,所以我决定编写一个函数:

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)

更新:

我认为问题在于表格一开始并没有下降,因为当我转储数据时,我仍然可以看到表格。为什么它不能正确丢弃桌子?

4

2 回答 2

1

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

heroku run python manage.py migrate
于 2013-02-26T23:56:06.327 回答
0

是的,你可能没有掉表,你只是认为你有。

确保您首先通过以下方式正确引用连接:

from django db import connection

使用 django 调试工具栏查看执行的 sql 以及发生了什么。或者可能在 heroku shell 上使用像 pudb 这样的调试程序来查看发生了什么。

于 2014-08-06T00:17:00.750 回答