【问题标题】:ProgrammingError at / relation does not existProgrammingError at / 关系不存在
【发布时间】:2023-03-14 19:08:02
【问题描述】:

我在其他地方找不到答案。 (很抱歉再次询问,但是)

怎么了? 有人遇到过这样的错误吗?

/register/ 处的编程错误 关系“user_user”不存在 第 1 行:从 "user_user" WHERE "user_user"."userna... 中选择 (1) 作为 "a"...

我扩展了用户抽象模型和错误说没有关系 当我在 sqlite3 中扩展用户时没有这样的错误,但 postgre 是完整的数据库错误

 class User(AbstractUser):
    social_username = models.CharField(max_length=100, null=True, blank=True)

views.py

def registration(request):
    if request.method == 'POST':
        form = RegisterUserForm(request.POST)
        if form.is_valid():
            form.save()
            username = form.cleaned_data.get('username')
            raw_password = form.cleaned_data.get('password1')
            user = authenticate(username=username, password=raw_password)
            login(request, user)
            messages.success(request,'You were successfully registered  %s' % user.first_name)
            return HttpResponseRedirect('/')
        messages.error(request, 'Something went wrong while authenticating')
        return render(request, 'project/register.html', {'form': form})

    else:
        form = RegisterUserForm()
        return render(request, 'project/register.html', {'form': form})

settings.py

AUTH_USER_MODEL = 'user.User'

【问题讨论】:

  • 你可能忘记运行makemigrationsmigrate
  • 我已经做了 100 次了
  • 我尝试使用迁移删除它们并再次运行命令,重新创建表用户
  • 如果您不关心数据,请尝试删除整个数据库并再次运行migration。有时 django 认为它确实进行了迁移,但实际上并没有,通常发生在您手动更改一些 db 条目之后。
  • 我摆脱了sqlite3数据库删除方法中的一些问题。删除菜单工具栏上的sqlite3很容易,只需点击数据库并删除,但是如何删除或重置PostgreSql?

标签: python django postgresql


【解决方案1】:

不确定为什么会发生此错误,但您可以运行此命令,并且您可以在不丢失数据的情况下继续操作。

python manage.py migrate --run-syncdb

【讨论】:

    【解决方案2】:

    删除现有的迁移,删除数据库并再次创建它(使用相同的名称),进行新的迁移,一切顺利

    【讨论】:

    • 需要删除迁移并删除数据库的解决方案似乎不是什么解决方案。
    猜你喜欢
    • 2021-01-03
    • 2018-10-25
    • 2013-05-06
    • 2020-03-06
    • 1970-01-01
    • 2021-04-06
    • 2018-04-13
    • 2018-05-23
    • 2016-05-01
    相关资源
    最近更新 更多