python manage.py 迁移不对 postgres 数据库进行任何更改
python manage.py migrate does not make any changes in the postgres database
这似乎是一个简单的问题我不确定我做错了什么。
例如,如果我想在 models.py 中的 类 之一中添加一个新字段,方法是更改:
class FeedBack(models.Model):
feedback = models.CharField(max_length=600)
user = models.ForeignKey(User,default="")
到
class FeedBack(models.Model):
feedback = models.CharField(max_length=600)
email = models.CharField(max_length=100)
user = models.ForeignKey(User,default="")
那我运行
python manage.py makemigrations
python manage.py 迁移
一切看起来都很好,但实际上数据库中没有任何更改。尝试查看反馈时 table 我收到以下异常:
第 IngressoMonitor_feedback.email 列不存在
还在 table 上使用 psql \d+ 显示尚未添加电子邮件
现在我只能使用 psql 添加和更改 tables,但我更愿意将其写在 models.py 中,因为这对我来说似乎更容易。
确保包含该 models.py 文件的应用包含在项目设置文件的 INSTALLED_APPS 中。此外,请不要触摸应用程序迁移文件夹下的文件,除非您确定自己知道自己在做什么。还请确保您的设置文件中指定的数据库帐户具有必要的权限。
如果您最近更改了 Django 版本,此 link 可能对您有用。但无论如何都要试一试,在这种情况下按应用程序进行迁移:
python manage.py makemigrations app_name
如果一切都失败了,只需删除数据库的表,然后从头开始重新生成所有内容。但是,如果在某些时候,您弄乱了任何迁移文件,您可能希望在执行 makemigrations 之前删除所有这些文件,以确保您拥有一组新的工作迁移文件,manage.py 可以处理这些文件。
您可能需要重置数据库用户或所有者密码,然后重试。在我的中,我不得不重置默认的 postgres 用户,以不使用此 link .
从命令行使用任何密码
然后尝试 运行 命令:python manage.py migrate
现在效果很好。
别忘了从 django 项目设置您的配置:myprojectname/myprojectname/settings.py 文件。这里的例子是我的;
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'polling_db',
'USER': 'postgres',
'PASSWORD': '',
'HOST': '127.0.0.1',
'PORT': '5432',
}
}
这似乎是一个简单的问题我不确定我做错了什么。 例如,如果我想在 models.py 中的 类 之一中添加一个新字段,方法是更改:
class FeedBack(models.Model):
feedback = models.CharField(max_length=600)
user = models.ForeignKey(User,default="")
到
class FeedBack(models.Model):
feedback = models.CharField(max_length=600)
email = models.CharField(max_length=100)
user = models.ForeignKey(User,default="")
那我运行
python manage.py makemigrations
python manage.py 迁移
一切看起来都很好,但实际上数据库中没有任何更改。尝试查看反馈时 table 我收到以下异常:
第 IngressoMonitor_feedback.email 列不存在
还在 table 上使用 psql \d+ 显示尚未添加电子邮件
现在我只能使用 psql 添加和更改 tables,但我更愿意将其写在 models.py 中,因为这对我来说似乎更容易。
确保包含该 models.py 文件的应用包含在项目设置文件的 INSTALLED_APPS 中。此外,请不要触摸应用程序迁移文件夹下的文件,除非您确定自己知道自己在做什么。还请确保您的设置文件中指定的数据库帐户具有必要的权限。
如果您最近更改了 Django 版本,此 link 可能对您有用。但无论如何都要试一试,在这种情况下按应用程序进行迁移:
python manage.py makemigrations app_name
如果一切都失败了,只需删除数据库的表,然后从头开始重新生成所有内容。但是,如果在某些时候,您弄乱了任何迁移文件,您可能希望在执行 makemigrations 之前删除所有这些文件,以确保您拥有一组新的工作迁移文件,manage.py 可以处理这些文件。
您可能需要重置数据库用户或所有者密码,然后重试。在我的中,我不得不重置默认的 postgres 用户,以不使用此 link
然后尝试 运行 命令:python manage.py migrate
现在效果很好。
别忘了从 django 项目设置您的配置:myprojectname/myprojectname/settings.py 文件。这里的例子是我的;
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'polling_db',
'USER': 'postgres',
'PASSWORD': '',
'HOST': '127.0.0.1',
'PORT': '5432',
}
}