如何使用Django迁移重建已删除的表?

2024-06-01 11:30:48 发布

您现在位置:Python中文网/ 问答频道 /正文

有两个模型组和学生组,其中只有一个表组,学生表被删除。

如何重新创建maje Django?如果我这样做makemigrations,它将打印“未检测到任何更改”。

在管理页面上,当我单击学生表时,它抛出一个异常:

relation "students_students" does not exist

Tags: django模型not页面学生existrelationdoes
2条回答

让Django重新创建手动删除的表不是一个简单的方法。一旦您的数据库被手动更改,Django的数据库视图(来自迁移)就不同于实际情况,并且可能很难修复。

如果运行sqlmigrate命令,它将显示创建表所需的SQL。可以在数据库shell中运行sql。假设您的应用程序名是students,并且创建表的迁移是00XX_create_students.py,那么您将执行以下操作:

./manage.py sqlmigrate students 00XX_create_students

如果有指向或来自students表的外键,则还必须创建约束。

在django 1.7中,您可以尝试:

1. Delete your migrations folder

2. In the database: DELETE FROM django_migrations WHERE app = 'app_name'.
   You could alternatively just truncate this table.

3. python manage.py makemigrations

4. python manage.py migrate --fake

如果您在django 1.9.5工作,这是解决此问题的100%解决方案:

1. Delete your migrations folder

2. In the database: DELETE FROM django_migrations WHERE app = 'app_name'.
   You could alternatively just truncate this table.

3. python manage.py makemigrations app_name

4. python manage.py migrate

这对我来说是100%有效的!

相关问题 更多 >