【问题标题】:Django - No such table: main.auth_user__oldDjango - 没有这样的表:main.auth_user__old
【发布时间】:2019-05-07 07:27:16
【问题描述】:

我正在关注官方 Django 文档中的 first app tutorial 并在尝试保存通过管理页面所做的一些更改时遇到此错误。我对此进行了一些研究,但是我能够找到的可能的解决方案(例如迁移数据库)根本行不通。如果您想查看我的代码的某些特定部分,请告诉我。

以下是错误:

OperationalError at /admin/polls/question/1/change/ 没有这样的表: main.auth_user__old 请求方法:POST 请求 网址:http://127.0.0.1:8000/admin/polls/question/1/change/Django 版本:2.1.4 异常类型:OperationalError 异常值:无 这样的表: main.auth_user__old 异常 位置:/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/sqlite3/base.py 在执行中,第 296 行 Python 可执行文件:/Users/gfioravante/Projects/test_app/ta_env/bin/python3 Python 版本:3.7.1 Python 路径:
['/Users/gfioravante/Projects/test_app/test_app', '/usr/local/Cellar/python/3.7.1/Frameworks/Python.framework/Versions/3.7/lib/python37.zip', '/usr/local/Cellar/python/3.7.1/Frameworks/Python.framework/Versions/3.7/lib/python3.7', '/usr/local/Cellar/python/3.7.1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload', '/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages'] 服务器时间:2018年12月5日星期三16:45:00 +0000

和追溯:

环境:

请求方法:POST 请求 URL: http://127.0.0.1:8000/admin/polls/question/1/change/

Django 版本:2.1.4 Python 版本:3.7.1 已安装的应用程序: ['polls.apps.PollsConfig', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles'] 已安装的中间件: ['django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware']

追溯:

文件 “/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py” 在_执行 85. return self.cursor.execute(sql, params)

文件 “/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/sqlite3/base.py” 在执行 296. return Database.Cursor.execute(self, query, params)

上述异常(没有这样的表:main.auth_user__old)是 以下异常的直接原因:

文件 “/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/core/handlers/exception.py” 在内部 34. response = get_response(request)

文件 “/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/core/handlers/base.py” 在 _get_response 126. response = self.process_exception_by_middleware(e, request)

文件 “/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/core/handlers/base.py” 在 _get_response 124. response = Wrapped_callback(request, *callback_args, **callback_kwargs)

文件 “/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py” 在包装中 604. return self.admin_site.admin_view(view)(*args, **kwargs)

文件 “/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/utils/decorators.py” 在 _wrapped_view 142. response = view_func(request, *args, **kwargs)

文件 “/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/views/decorators/cache.py” 在 _wrapped_view_func 44. response = view_func(request, *args, **kwargs)

文件 内部的“/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/sites.py” 223. 返回视图(请求,*args,**kwargs)

文件 “/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py” 在 change_view 1640. return self.changeform_view(request, object_id, form_url, extra_context)

文件 “/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/utils/decorators.py” 在 _wrapper 中 45. return bound_method(*args, **kwargs)

文件 “/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/utils/decorators.py” 在 _wrapped_view 142. response = view_func(request, *args, **kwargs)

文件 “/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py” 在 changeform_view 1525. return self._changeform_view(request, object_id, form_url, extra_context)

文件 “/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py” 在_changeform_view 1571. self.log_change(request, new_object, change_message)

文件 “/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py” 在 log_change 826.change_message=消息,

文件 “/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/models.py” 在 log_action 35. change_message=change_message,

文件 “/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/manager.py” 在 manager_method 中 82. return getattr(self.get_queryset(), name)(*args, **kwargs)

文件 “/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/query.py” 在创建 413. obj.save(force_insert=True, using=self.db)

文件 “/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/base.py” 在保存 718. force_update=force_update, update_fields=update_fields)

文件 “/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/base.py” 在 save_base 748. 更新 = self._save_table(raw, cls, force_insert, force_update, using, update_fields)

文件 “/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/base.py” 在_save_table 831. 结果 = self._do_insert(cls._base_manager, using, fields, update_pk, raw)

文件 “/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/base.py” 在 _do_insert 869. 使用=使用,原始=原始)

文件 “/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/manager.py” 在 manager_method 中 82. return getattr(self.get_queryset(), name)(*args, **kwargs)

文件 “/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/query.py” 在_插入 1136. return query.get_compiler(using=using).execute_sql(return_id)

文件 “/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/sql/compiler.py” 在执行_sql 1289. cursor.execute(sql,参数)

文件 “/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py” 在执行 100. return super().execute(sql, params)

文件 “/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py” 在执行 68. return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)

文件 “/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py” 在 _execute_with_wrappers 77. return executor(sql, params, many, context)

文件 “/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py” 在_执行 85. return self.cursor.execute(sql, params)

文件 “/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/utils.py” 在退出 89. 从 exc_value 提高 dj_exc_value.with_traceback(traceback)

文件 “/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py” 在_执行 85. return self.cursor.execute(sql, params)

文件 “/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/sqlite3/base.py” 在执行 296. return Database.Cursor.execute(self, query, params)

异常类型:/admin/polls/question/1/change/ 处的 OperationalError 异常值:没有这样的表:main.auth_user__old

【问题讨论】:

  • 如果您没有数据,只需将其删除并再次迁移。如果不可能,请执行 python manage.py showmigrations 以查看哪些迁移未完成
  • 此问题仅在 Django 2.1.5 版中得到解决

标签: python django python-3.x django-models


【解决方案1】:

维护以下步骤轻松摆脱这个问题:

  1. 保留 django 版本 2.1.5(此版本中解决的问题) pip install django==2.1.5
  2. 删除 SQLite 数据库
  3. 再次迁移python manage.py makemigrations,然后python manage.py migrate
  4. 启动服务器python manage.py runserver

完成!

【讨论】:

  • 这将完美运行,但假设您不想删除 sqlite db 文件?
  • 即使不删除 sqlite db(但仍会迁移),它也可以工作。我正在使用 2.0.4 处理旧项目
  • 谢谢,这很好用。我使用的是 2.0.7 版,在管理员上保存数据时遇到问题。
  • 对我来说,我第一次使用:pip install --upgrade django==2.1.5 然后我使用了python manage.py makemigrations 然后python manage.py migrate 然后我使用了python manage.py runserver 就像一个魅力,我不必删除数据库!跨度>
【解决方案2】:

我自己也发现了这个,它看起来与https://code.djangoproject.com/ticket/29182 有关。目前,您可以将您的 sqlite 版本降级到 2.6 之前的版本(例如 2.5.1)

【讨论】:

  • 现已提交对该问题的修复,并将包含在下一个版本 2.1.5(预计 2019 年 1 月 1 日)和 2.0.10(发布日期待定)中。
  • 降级macOS系统sqlite3不是那么容易还是我在这里遗漏了什么?我的解决方法是安装 github/master django(已修复)。
  • @Alper 我卸载了当前的 django,然后从 GitHub 安装了 django。该错误仍然存​​在,我无法在我的 macOS 上降级 sqlite3(例如,使用 brew install sqlite3@3.25.1 )有什么想法吗?
  • 更新后确保删除数据库并使用迁移命令重建它。
  • @Alvaro 该错误已在 Django 2.1.5 中修复
【解决方案3】:

刚刚这样做,它解决了问题:

pip install Django --upgrade

然后:

python manage.py migrate

python manage.py makemigrations app

python manage.py migrate

【讨论】:

  • 你能解释一下这里到底发生了什么吗?它对我有用,但我不明白发生了什么
  • 刚刚将Django升级到最新版本,然后再次迁移。 @NetranjitBorgohain
  • 好吧,我还以为发生了其他事情。我对此很陌生
  • 这为我解决了问题。我按照tutorial 中的建议使用Django==2.0.7,通过运行这些命令切换到3.2.9,它已修复。
【解决方案4】:

这是我为解决这个问题所做的:

  1. 进入虚拟环境,安装django@2.1.7

    pip install django==2.1.7
    
  2. 删除根文件夹中的db.sqlite3 文件。

  3. 在您的根文件夹中创建新的db.sqlite3
  4. 重新运行迁移:

    python3 manage.py makemigrations
    
    python3 manage.py migrate
    

现在应该可以正常工作了。

【讨论】:

  • “删除根目录下的db.sqlite3文件”是关键~运行python3 manage.py makemigrations会创建新的sqlite3文件。
  • 由于某种原因,删除 sqlite 并不起作用,我也尝试删除 pycache + 迁移(我只是在学习 Django),然后它对我有用。
【解决方案5】:

该问题是由 SQLite 3.26.0 中 ALTER TABLE RENAME 语句的修改行为引起的(请参阅 compatiblity note)。他们还引入了PRAGMA legacy_alter_table = ON 语句以保持与以前版本的兼容性。即将发布的Django release 2.1.5 使用前面提到的声明作为修补程序。预计 2019 年 1 月 1 日。

【讨论】:

    【解决方案6】:

    转到这个文件夹 django/db/backends/sqlite3

    schema.py文件备份到另一个文件夹

    在文本编辑器中打开原始 schema.py

    在那里你可以看到一个类似sn-p的代码

        def __enter__(self):
        # Some SQLite schema alterations need foreign key constraints to be
         # disabled. Enforce it here for the duration of the schema edition.
         if not self.connection.disable_constraint_checking():
             raise NotSupportedError(
                 'SQLite schema editor cannot be used while foreign key '
                 'constraint checks are enabled. Make sure to disable them '
                 'before entering a transaction.atomic() context because '
                 'SQLite3 does not support disabling them in the middle of '
                 'a multi-statement transaction.'
             )
         self.connection.cursor().execute('PRAGMA legacy_alter_table = ON')
         return super().__enter__()
    

    评论它们并粘贴以下代码sn-p

         def __enter__(self):
        # Some SQLite schema alterations need foreign key constraints to be
        # disabled. Enforce it here for the duration of the transaction.
        self.connection.disable_constraint_checking()
        self.connection.cursor().execute('PRAGMA legacy_alter_table = ON')
        return super().__enter__()
    

    这对我有用。 (schema.py 的备份以防工作出错;D )

    更多信息

    https://github.com/django/django/pull/10733/commits/c8ffdbe514b55ff5c9a2b8cb8bbdf2d3978c188f#diff-0c8f495bfee773ab7b5409533bd6d7ef

    【讨论】:

    • 我在 django 1.11 中使用了这个修复,除了我只需要在 "c.execute('PRAGMA foreign_keys = 0') 之后添加行 "c.execute('PRAGMA legacy_alter_table = ON')" " 并修复了它。
    • 我正在学习需要 django 2.0.7 的教程。这个解决方案有效:)
    • @Bisonbleu 我想我正在学习同一个教程。但是该解决方案对我不起作用。你能详细说明你做了什么吗?
    • @unathletic_coder 正如 Namal Jayasundara 的回答中所建议的那样,我在第 21 行转到 /project_name/lib/python3.7/site-packages/django/db/backends/sqlite3/schema.py 以: def __enter__(self): 并用建议的 3 行代码替换现有代码。我在做youtube.com/watch?v=F5mRW0jo-U4
    【解决方案7】:

    对我来说,它来自我的 django 版本(即 2.1) 安装更高版本(出于某些原因,我使用了 2.1.5) ** 删除 db.sqlite3,以及迁移文件夹中除了 init.py 之外的所有内容 运行命令:

    pip install django==2.1.5 --upgrade
    python manage.py makemigrations
    python manage.py migrate
    python manage.py createsuperuser
    python manage.py runserver
    

    【讨论】:

      【解决方案8】:

      我通过运行将 Django 从 2.1.4 升级到 2.1.5 解决了这个问题

      pip install --upgrade django==2.1.5
      

      但我不得不重新重建项目,因为这个错误似乎与我使用旧版本的 Django 插入数据库的对象有关。


      更新:

      无需删除整个项目,只需删除数据库即可。然后运行

      python manage.py makemigrations
      python manage.py migrate
      python manage.py createsuperuser
      

      【讨论】:

      • 在这种情况下 migrate 和 makemigrations 命令对于新的 django 来说已经足够了。
      【解决方案9】:
      1. 首先,停止服务器并删除 db.sqlite3。

      2. 然后,你需要运行:

        python manage.py makemigrations
        python manage.py migrate

      3. 运行此命令后,您需要创建超级用户。创造 超级用户,运行:
        python manage.py createsuperuser
        在此处输入超级用户详细信息。

      4. 再次运行您的服务器。

      你去。

      【讨论】:

        【解决方案10】:

        同样的事情发生在我身上,非常令人沮丧。我在我的环境中使用 anaconda,我发现如果不立即重新安装最新版本的 sqlite 就无法删除 sqlite。尝试旧版本的 django 似乎也不起作用。唯一对我有用的解决方案是使用 PostgreSQL 数据库。这当然不理想,但我计划在未来使用 PostgreSQL 数据库,所以这并不是完全浪费时间。如果您发现自己和我在同一个地方,那么如果您想知道如何将 PostgreSQL 数据库与您的 django 项目连接起来,那么video 可能会有所帮助。

        在实际更改 settings.py 之前,您需要安装 postgreSQL 数据库,安装更多的是在所有选项上单击“下一步”。但是,请记住您在安装过程中使用的用户名和密码。

        【讨论】:

          【解决方案11】:

          即使在升级到最新的 Django 2.2.12 并运行 migrateofficial database rebuild script 之后,我也遇到了与 __old_ 相同的错误: django.db.utils.IntegrityError: The row in table 'djangocms_blog_post_translation' with primary key '2' has an invalid foreign key: djangocms_blog_post_translation.master_id contains a value '2' that does not have a corresponding value in djangocms_blog_post__old.id.

          这是我的技巧:

          1. 将数据库内容转储到sql:sqlite3 my_db.db .dump > my_db.sql
          2. 在 sql 输出上运行正则表达式,将 __old" ("id") 替换为 " ("id") DEFERRABLE INITIALLY DEFERRED
          3. 删除旧的数据库文件
          4. 将修改后的sql加载到新数据库中:sqlite3 my_db.db < my_db.sql
          5. ??? &利润

          【讨论】:

          • 一千次谢谢 - 我绝不会删除我的数据库并从头开始。我还必须添加 PRAGMA legacy_alter_table=FALSE;到 my_db.sql 的顶部
          • 如果“只是删除你的数据库”不是你想要做的,这是一个很好的答案!
          【解决方案12】:

          Open => /YourAppFolder/migrations/ 你会看到迁移文件就像 '0001_initial.py' 删除所有这些文件。并运行以下命令 1-python manage.py makemigrations 2-python manage.py migrate 希望,它一定能解决你的问题

          【讨论】:

          • 最终问题与此无关,但感谢您抽出宝贵时间!
          【解决方案13】:

          对于以上问题及解决方法是:

          1) 到终端输入pip install django==2.1.7或者最新版本的django

          2) 安装完成后,在终端输入python manage.py makemigrations,然后输入python manage.py migrate

          3) 在终端中,使用代码python manage.py runserver启动服务器

          4) 使用密码登录管理服务器并添加产品,即可成功添加产品。

          【讨论】:

          【解决方案14】:

          对于其他不想降级任何软件的人,您可以进入您的settings.py 文件,在DATABASES 字典中,您可以将.sqlit3 替换为.postgresql,然后在其下方更改@ 987654325@ 至db.sql。这会将您的默认数据库切换为使用 postgreSQL。

          这样做时,您需要pip install psycopg2

          删除您的db.sqlite3 文件(如果您有一个/不关心丢失其中的内容)以及应用迁移文件夹中除__init__.py 文件之外的所有其他内容。完成所有这些后,您可以运行 python manage.py makemigrations 和 python manage.py migrate 然后它应该可以工作了:)

          希望我能帮助到别人!

          【讨论】:

          • PostgreSQL 也需要安装才能为那些在完成所有这些操作后无法弄清楚为什么会出现连接错误的人工作。 :)
          • psycopg2 不是 PostgreSQL 吗?因为这可以解释为什么它不会为我启动服务器哈哈
          • AFAIK psycopg2 是一个让 Python 与 PostgreSQL 对话的适配器,但 PostgreSQL 需要单独安装。注意:我是 Django 新手,所以对我说的任何话都持保留态度。
          【解决方案15】:

          保留 django 版本 2.1.5

          This issue is adressed only in this version of Django
          
          • pip install django==2.1.5
          • 删除 SQLite 数据库
          • 运行迁移
          • 启动服务器 python manage.py runserver

          这样就解决了上面的问题

          【讨论】:

          • 可以了——记得删除之前的SQLite db
          【解决方案16】:

          我在命令行上只做了 4 件事,它修复了我的问题。

          1. ctrl + c(停止服务器)
          2. py manage.py makemigrations
          3. py manage.py migrate
          4. py manage.py runserver(启动服务器)

          【讨论】:

          【解决方案17】:

          除了我有 2 个 sqlite 数据库和自定义数据库路由器之外,我遇到了同样的问题。我设法通过将 Django 降级到 1.11.20 来使其工作,并且无需重新创建数据库。

          【讨论】:

            【解决方案18】:

            对于那些无法通过上述答案解决此错误的人,如果您将应用程序命名为“main”,则可能会由于应用程序名称问题而发生此错误。因此,请尝试将您的应用名称“main”更改为另一个。

            【讨论】:

              【解决方案19】:

              您需要升级 Django,此问题已在此 PR https://github.com/django/django/pull/10733 中修复

              【讨论】:

                【解决方案20】:

                我通过更改我的一些模型解决了这个问题。我有一个命名项目和一个命名项目。数据库表变得混乱并给我这个错误。

                【讨论】:

                  【解决方案21】:

                  我已经使用以下方法解决了这个问题:

                  1) 删除db.sqlit3

                  2) 应用程序目录删除所有内容 pycache

                  3) manage.py makemigrations, manage.py migrate, manage.py createsuperuser 然后 manage.py runserver。

                  【讨论】:

                    【解决方案22】:

                    我遇到了同样的问题并通过以下操作解决了它:

                    1) 获取最新的django 版本

                    2) 获取最新的SQL Lite 版本

                    3) 从您的项目中删除db.sqlite3 文件

                    4) 对models.py 进行小改动(例如更改字段的大小)

                    5) 通过运行makemigrations & migrate commands 生成一个新的db.sqllite3 文件

                    6) 将新建的db.sqllite3文件导入SQL Lite

                    【讨论】:

                      【解决方案23】:

                      我将 django 安装/降级到 2.2 版本,这删除了 ​​django 3.x

                      pip install django==2.2
                      

                      然后我删除了 db.sqlite 文件,然后

                      我试过了

                      python manage.py makemigrations,
                      python manage.py migrate 
                      python manage.py creatingsuperuser. 
                      

                      【讨论】:

                        【解决方案24】:
                        1. 升级 Django pip install Django --upgrade

                        2. 删除项目根目录下的db.sqlite3文件。

                        3. 通过重新运行迁移在根文件夹中创建新的 db.sqlite3。 python3 manage.py makemigrations

                        4. 迁移 python3 manage.py migrate

                        它可能仅适用于此,或者如果它被删除,您可能需要创建一个新的超级用户。

                        1. 使用检查您的超级用户
                        python manage.py shell
                        from django.contrib.auth.models import User
                        User.objects.filter(is_superuser=True)   
                        

                        如果出现<QuerySet []>,则表示没有用户。 否则检查您的用户是否存在。

                        1. 如果您的用户不存在,请使用 python manage.py createsuperuser

                        【讨论】:

                          【解决方案25】:

                          首先,更新django版本:

                          pip install django --upgrade
                          

                          然后

                          ./manage.py makemigration
                          ./manage.py migrate
                          ./manage.py runserver
                          
                          

                          【讨论】:

                            【解决方案26】:

                            步骤:

                            1. 从你的 ENV 中卸载当前的 Django。只需删除文件夹“anaconda3/envs/yourenv/lib/python3.7/site-packages/Django all versions..

                              注意:仅限 Anaconda 用户,其他用户应弄清楚如何从您的 ENV 中卸载软件包。

                            2. 转到https://github.com/django/django

                            3. 将 repo 下载为 zip 文件。

                            4. 解压缩。

                            5. 切换到您的 ENV。

                            6. 输入解压后的文件夹。

                            7. 运行 "python setup.py install" 并安装 Django。

                            8. 删除您之前的@​​987654323@ 文件。现在再次应用迁移以创建一个新的db.sqlite3 文件。

                              注意:我不知道如何修复以前的 dbfile 并防止数据丢失。如果你知道,请告诉我。

                            9. 运行服务器。

                            恭喜!现在可以正常使用了。

                            在 1 月份从 Django 官方版本更新到最新的 django。

                            【讨论】:

                              【解决方案27】:

                              请检查您是否尚未从应用中删除迁移文件夹 如果删除尝试恢复文件夹并删除迁移文件或 如果删除永久创建应用程序并复制粘贴您的工作和

                              然后

                              1. Delete db.sqlite3
                              2. python manage.py makemigrations
                              3. python manage.py migrate
                              4. python manage.py createsuperuser 
                              

                              HTH :)

                              【讨论】:

                                【解决方案28】:
                                1. 删除db.sqlite3
                                2. ma​​kemigrations & 迁移
                                3. 创建新的超级用户

                                这对我有用

                                【讨论】:

                                  【解决方案29】:

                                  注意如果您在 Sqlite3 DB 中有一些个人数据,请不要遵循此技巧,因为您要删除 Sqlite3 DB

                                  我知道这个问题有很多答案,但只有这个技巧可以帮助我解决这个问题,因为我是 python 初学者并正在学习 Django

                                  1. 停止运行 django 网络服务器,Ctrl-C
                                  2. 删除 db.sqlite3
                                  3. 已卸载 Django 旧版本
                                  4. 使用“pip install django”安装最新版本的 Django
                                  5. 从您项目的所有应用中删除所有迁移

                                  现在在终端中运行这些命令

                                  1. python manage.py makemigrations
                                  2. python manage.py migrate
                                  3. python manage.py createsuperuser(提供超级用户凭据)
                                  4. python manage.py runserver

                                  现在终于用更新的超级用户凭据登录管理面板并尝试添加记录。

                                  某人在link 提出了同样的建议

                                  【讨论】:

                                    【解决方案30】:

                                    django-2.2.7
                                    这对我有用 -

                                    1) 删除 db.sqlite3
                                    2) 在每个应用程序的 migrations 文件夹中,删除 __init__.py 以外的所有内容。
                                    3) 在每个应用程序中,删除 __pycache__ 文件夹。

                                    我不确定您是否必须为所有应用程序或仅对相关应用程序执行此操作,但这对我有用。

                                    【讨论】:

                                    • 删除migrations 文件是解决此类问题的值得实践的方法。 @rajvijay
                                    猜你喜欢
                                    • 2019-05-17
                                    • 1970-01-01
                                    • 2019-06-01
                                    • 2019-05-28
                                    • 2020-10-06
                                    • 2012-09-28
                                    相关资源
                                    最近更新 更多