我想使用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...
答案 0 :(得分:0)
在pythonanywhere上托管时,在迁移数据库时遇到了完全相同的问题。经过许多不同的方法,包括删除和撤消迁移并再次重做。
然后,我终于使用默认的 db.sqlite3 数据库,并从数据库中导出SQL(使用sqlite3浏览器),并使用在线sql converter将其转换为Postgresql,并在 localhost postgres数据库,其中表是使用 pgadmin 中的获取的SQL查询创建的。
然后将其投入生产时,效果很好。
* 很抱歉,如果我的答案不是很清楚,我是作为用户而不是仅仅作为浏览器的Stackoverflow的新手。如有疑问,我将编辑/评论我的答案。