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 - 迁移后未创建表的主要内容,如果未能解决你的问题,请参考以下文章

运行显式创建表的迁移时未创建 Django 表。

Django迁移更改目录结构后未检测到更改

Django 1.7 迁移不会重新创建删除的表,为啥?

django makemigrations 和 heroku 服务器上的迁移不创建表

Django 中的模型表被删除

Django迁移错误表已经存在