【发布时间】:2020-11-23 07:16:44
【问题描述】:
我重命名了一些模型并尝试应用迁移,但 Django 没有检测到它们已重命名。因此,我删除了 manage.py 的内容,刷新了数据库,然后运行了 manage.py makemigrations 和 manage.py migrate。现在,当我尝试通过管理控制台或任何查询访问我的模型之一时,我收到以下错误:
ProgrammingError at /admin/restapi/appuser/
relation "restapi_appuser" does not exist
LINE 1: SELECT COUNT(*) AS "__count" FROM "restapi_appuser"
当我运行 manage.py makemigrations 时,输出包括(截断):
Migrations for 'restapi':
restapi/migrations/0001_initial.py
- Create model AppUser
我尝试使用以下输出(截断)运行 python3 manage.py sqlmigrate restapi 0001_initial:
BEGIN;
--
-- Create model AppUser
--
CREATE TABLE "restapi_appuser" ("id" serial NOT NULL PRIMARY KEY, "username" varchar(30) NOT NULL UNIQUE, "email" varchar(50) NOT NULL UNIQUE, "password" varchar(50) NOT NULL, "join_date" timestamp with time zone NOT NULL);
在我看来,模型应该在数据库中,但我想知道为什么会出现此错误
编辑:
这里是 manage.py migrate 的完整输出:
> python3 manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, restapi, sessions
Running migrations:
No migrations to apply.
【问题讨论】:
-
刷新数据库时是否删除了所有表,包括迁移表?
-
我运行了“manage.py flush”——这会删除所有表吗?
-
它没有,您可能应该删除并重新创建数据库以获取新的数据库
-
您可以尝试
python manage.py migrate restapi zero撤消第一次迁移,然后重试python manage.py migrate。如果由于表实际上不存在而导致零迁移失败,请尝试使用--fake。 -
删除数据库并重新创建它,然后重新运行 makemigrations 和 migrate 修复了该问题。谢谢你的帮助!!