Django - 迁移后未创建表
Posted
技术标签:
【中文标题】Django - 迁移后未创建表【英文标题】:Django - Table is not creating after migration 【发布时间】:2021-01-21 01:00:24 【问题描述】:我想在 DigitalOcean 服务器上使用 Postgres 数据库为我的 Django 项目添加新功能。问题是,在本地服务器上一切正常,但在生产服务器上,新模型的新表没有创建。我已删除所有迁移文件,再次进行迁移,但再次无法在数据库中看到新表。请帮我解决这个问题。我的确切错误:
relation "documents_app_employee" does not exist LINE 1: INSERT INTO "documents_app_employee" ("fin", "name", "surnam...
这是我的代码:
models.py
:
class Employee(models.Model):
fin = models.CharField(max_length=10, blank=True, null=True)
name = models.CharField(max_length=20)
surname = models.CharField(max_length=20)
def __str__(self):
return self.name + " " + self.surname
forms.py
:
class CreateEmployeeForm(ModelForm):
def save(self, commit=False):
employee = super(CreateEmployeeForm, self).save(commit=False)
Employee.objects.create(
fin = employee.fin,
name = employee.name,
surname = employee.surname,
)
class Meta:
model = Employee
fields = '__all__'
删除和撤消迁移的脚本:
find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
find . -path "*/migrations/*.pyc" -delete
pip3 uninstall django
pip3 install -r requirements.txt
python3 manage.py makemigrations
python3 manage.py migrate
但又得到:
ProgrammingError at /employee_document
relation "documents_app_employee" does not exist
LINE 1: INSERT INTO "documents_app_employee" ("fin", "name", "surnam...
【问题讨论】:
【参考方案1】:我在 pythonanywhere 上迁移数据库时遇到了完全相同的问题。经过很多不同的方法,包括删除和撤消迁移并再次重做。
然后我终于使用了默认的 db.sqlite3 数据库并从中导出了 SQL(使用 sqlite3 浏览器)并使用在线 sql converter 将其转换为 Postgresql 并将我的项目连接到 localhost postgres 数据库,其中表是使用 pgadmin 中获得的 sql 查询 创建的。
然后它在将其推送到生产时运行良好。
*对不起,如果我的答案不是那么清楚,我是作为用户而不是浏览器的 *** 的新手。我会根据任何疑问编辑/评论我的答案。
【讨论】:
我理解你,兄弟,但你知道,我在服务器上的 Postgres 中有非常重要的数据。谢谢你的帮助! 所以使用 sql dump 来提取数据查询,并在上述过程之后再次使用这些数据查询重新输入您的数据库以上是关于Django - 迁移后未创建表的主要内容,如果未能解决你的问题,请参考以下文章