django - Django - 迁移后未创建表
问题描述
我想使用 Postgres 数据库在 DigitalOcean 服务器上为我的 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...
解决方案
在 pythonanywhere 上托管时迁移数据库时,我遇到了完全相同的问题。经过很多不同的方法,包括删除和撤消迁移并再次重做。
然后我最后使用了默认的db.sqlite3数据库并从中导出 SQL(使用 sqlite3 浏览器)并使用在线sql 转换器将其转换为 Postgresql并将我的项目连接到localhost postgres 数据库上,其中使用获得的 sql 查询创建表在pgadmin中。
然后在将其推向生产时运行良好。
*抱歉,如果我的回答不是很清楚,我是作为用户而不只是作为浏览器的 stackoverflow 的新手。我会根据任何疑问编辑/评论我的答案。
推荐阅读
- java - 处理流中的 null 而不过滤
- javascript - 从另一个组件有条件地导入一个组件的最佳方法是什么?
- r - 生成可重现随机数的种子
- mysql - 未处理的拒绝 SequelizeConnectionError - Sequelize MYSQL
- apostrophe-cms - 扩展撇号 cms 中常见输入字段的小部件
- ms-word - 使用 Velocity 模板生成更新 TOC 的 Word 文档
- vagrant - 在 CENTOS7 客户机中无法获取 VT-X
- html - 将图像调整为相对 div
- php - 比较 2 个相同的十进制数但给出错误的结果
- jenkins - 如何在 Jenkins groovy 脚本中以编程方式设置身份验证令牌?