【问题标题】:Relation does not exist django migrations关系不存在 django 迁移
【发布时间】:2019-02-04 20:21:08
【问题描述】:

我正在一个 EC2 实例上部署一个 django 应用程序,并且有以下 models.py:

class Profile(models.Model):

user = models.OneToOneField(User, on_delete=models.CASCADE)
foto = models.CharField(max_length=200, default="static/batman-for-

def __str__(self):
    return str(self.user.first_name) + " Profile"


@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
    if created:
        Profile.objects.create(user=instance)


@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
    instance.profile.save()

当我使用 django 用户登录时,出现以下错误:

ProgrammingError at /admin/login/
relation "profiles_profile" does not exist
LINE 1: ..."."profiles_profile" FROM "profiles_...

来自:

/home/ubuntu/chimpy/profiles/models.py in save_user_profile
instance.profile.save() 

我查看了 postgres 数据库,但找不到名为 Profile 的表,所以我猜我的迁移失败了,当我运行 python manage.py showmigrations 时它显示:

 admin
 [X] 0001_initial
 [X] 0002_logentry_remove_auto_add
auth
 [X] 0001_initial
 [X] 0002_alter_permission_name_max_length
 [X] 0003_alter_user_email_max_length
 [X] 0004_alter_user_username_opts
 [X] 0005_alter_user_last_login_null
 [X] 0006_require_contenttypes_0002
 [X] 0007_alter_validators_add_error_messages
 [X] 0008_alter_user_username_max_length
 [X] 0009_alter_user_last_name_max_length
contenttypes
 [X] 0001_initial
 [X] 0002_remove_content_type_name
sessions
 [X] 0001_initial

但没有关于其他表(包括配置文件之一)。我还想提一下,当我在终端中创建超级用户时,出现以下错误:

django.db.utils.ProgrammingError: relation "profiles_profile" does not exist
LINE 1: INSERT INTO "profiles_profile" ("user_id", "foto", "exchange...

我做错了什么?谢谢。

编辑:我的 settings.py 包括以下内容:

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'profiles',
'portfolios',
'django_extensions',
'rest_framework',
'corsheaders',
]

【问题讨论】:

  • 包含Profile类定义的应用名称是什么?
  • @HenryWoody 名字是“profiles”

标签: python django postgresql amazon-web-services amazon-ec2


【解决方案1】:

查看您的showmigrations 命令的输出,问题似乎在于您尚未为您的profiles 应用程序创建任何迁移。

要解决此问题,请运行:

python manage.py makemigrations profiles
python manage.py migrate

或者,您可以从上述命令中省略profiles,以便为所有需要它们的应用进行迁移。

【讨论】:

  • 它说:CommandError:App 'profiles' 没有迁移。 @HenryWoody
  • @AlbertoCarmona 您是否已将'profiles.apps.ProfilesConfig' 包含在您的INSTALLED_APPS 中的settings.py 文件中?
  • 很抱歉我已经阅读了 migrate 配置文件,我已经运行了 makemigrations 配置文件并且它有效,非常感谢!!
猜你喜欢
  • 2017-07-01
  • 2017-03-25
  • 2021-07-07
  • 2016-08-15
  • 2018-04-07
  • 2016-02-06
  • 1970-01-01
  • 2016-03-17
  • 2015-09-01
相关资源
最近更新 更多