【问题标题】:Using remote MySQL database on Heroku running Django app在运行 Django 应用的 Heroku 上使用远程 MySQL 数据库
【发布时间】:2022-02-13 12:55:07
【问题描述】:

我一直在努力解决以下问题: 我有一个在远程 Web 主机上运行的 MySQL 数据库。我在我的 Django 应用程序中连接到 MySQL 数据库(我将其用作主数据库)。 Django 应用在 Heroku 服务器上运行,但与在本地运行相比,我得到不同的数据结果。

是我遗漏了什么,还是对 Heroku 所做的更改未提交到数据库?

MySQL 设置:

DATABASES = {
 #   'default': {
  #      'ENGINE': 'django.db.backends.sqlite3',
   #     'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
   # }
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'xxx',
        'USER': 'xxx',
        'PASSWORD': 'xxx',
        'HOST': 'xxx',
        'PORT': 'xxx',
    }
}

【问题讨论】:

  • 请显示您的设置。您确定 Heroku 上的应用程序正在连接到远程 MySQL 数据库吗?
  • 用 MySQL 设置更新了问题。是的,我敢肯定,尽管 MySQL 数据库是在 Django 应用程序中配置的,而不是在 Heroku 中(如果可能/必要的话)。
  • 并且该设置文件中没有其他内容可以覆盖该 DATABASES 设置?
  • 不,它是文件中唯一的 DATABASES 设置。是否需要在 Heroku 上托管您的数据库,或者是否应该这样做(如果设置正确)?
  • 假设您的 MySQL 数据库设置为接受来自互联网的连接,这应该可以工作。但如果没有,您的网站将根本无法运行;你不会只是得到不同的数据。这就是为什么我能想到的唯一解释是你以某种方式覆盖了你的设置。很抱歉一直坚持,但例如,你确定没有给dj_database_url 打电话吗?

标签: python mysql django heroku


【解决方案1】:

我只是看到如果你删除heroku提供的广告,它将使用你在项目设置中放置的数据库

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
【解决方案2】:

我相信胡安·卡洛斯·埃尔南德斯是正确的。为了扩展他的答案,Heroku 使用它自己的数据库实例,除非你通过将 DATABASE_URL 指向你想要使用的那个来告诉它。请注意,Heroku 会阻止您覆盖正在使用的 DATABASE_URL,因为这会破坏现有数据库。虽然标记为 ruby​​-on-rails,但我找到的答案 here 似乎很相关。

总而言之,你只需要运行

heroku config:add DATABASE_URL=mysql://dbusername:dbpassword@databasehostIP:3306/databasename
heroku config:add SHARED_DATABASE_URL=mysql://dbusername:dbpassword@databasehostIP:3306/databasename

那就做吧

heroku restart

或者您可以在 Heroku 面板中更改这些变量。

【讨论】:

    猜你喜欢
    • 2011-07-20
    • 1970-01-01
    • 1970-01-01
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    • 2017-08-10
    • 2013-03-25
    • 1970-01-01
    相关资源
    最近更新 更多