【问题标题】:Django py manage.py makemigrateDjango py manage.py makemigrate
【发布时间】:2018-11-20 18:04:30
【问题描述】:

我能用它做什么?我是python和django的初学者。我下载了它,我写了 py manage.py makemigrate,我得到了错误。你能帮帮我吗?

【问题讨论】:

  • setting.py 的数据库部分是什么?分享吧!
  • 您没有 DB_NAME 环境变量,您可能在设置数据库连接时使用它。
  • 你能说出从 startapp 到 makemigrations 的步骤吗?

标签: python django makemigrations


【解决方案1】:

您的问题在于setting.py 中的数据库配置。如果您使用的是默认 SQLite,请复制/粘贴:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

您的项目将正常运行。在此之后,运行

python manage.py makemigrations
python manage.py migrate #copy all migrations to the database
python manage.py createsuperuser #to have a admin user to login to adminpanel
python manage.py runserver #starting the server

否则,看看official documentation如何连接MySQL、PostgreSQL、Oracle数据库及所需配置。

你的错误在here:

SQLite 不像 MySQL 或其他数据库。实际上,它不是一个真正的数据库。您正在使用端口、用户名、密码等。这些是错误的原因。 SQLite 没有在服务器或其他地方运行。它只是一个包含数据信息的文件。将你的更新到我的上面,它应该会重新开始工作或将你的数据库更改为 MySQL 或其他。

【讨论】:

  • 如果我得到下一个错误怎么办? ;D "从无 KeyError 提高 KeyError(key): 'DB_USER'"
  • 你能分享你的settings.py吗?因为当您创建一个新项目时,如果您没有接触数据库配置,则不应引发此错误
  • 我建议您删除所有迁移和数据库并重新运行 makemigrations 和迁移
【解决方案2】:

您需要提供设置文件中列出的所有环境变量。比如你截图中出现的DB_NAME。搜索os.environ[<VARIABLE_NAME>],应定义每个VARIABLE_NAME

【讨论】:

    【解决方案3】:

    如果您是初学者,最好继续阅读文档并像 https://docs.djangoproject.com/en/2.1/intro/tutorial01/ 一样操作

    如果您可以共享 settings.py 的数据库部分,那将会有所帮助。

    一般python manage.py startapp appname 应该为您创建必要的文件。 之后 python manage.py makemigrationspython manage.py migrate 应该可以正常工作。这不应该发生。

    【讨论】:

    • 这不是问题的答案,只是一个建议,没有提到任何新方法。
    • 好吧,OP 说他们输入了python manage.py makemigrate,这不是正确的命令;这个答案提供了正确拼写的命令。除此之外,对于初学者来说,这是一个可靠的建议。
    猜你喜欢
    • 1970-01-01
    • 2017-02-20
    • 2019-09-10
    • 2019-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-07
    相关资源
    最近更新 更多