Django 总是连接到 localhost mongodb
Posted
技术标签:
【中文标题】Django 总是连接到 localhost mongodb【英文标题】:Django always connects to localhost mongodb 【发布时间】:2019-06-05 02:44:43 【问题描述】:我已按照 db connection config 的指南进行操作: https://nesdis.github.io/djongo/database-configuration/
但是,它总是连接到本地主机,而不是我的设置。
有人对这个问题有任何想法吗?
我的包版本:
Django 2.0
django-cors-headers 2.4.0
django-rest-auth 0.9.3
djangorestframework 3.9.0
djongo 1.1
mongoengine 0.16.3
pip 10.0.1
pymongo 3.7.2
urllib3 1.24.1
我的设置
DATABASES =
'default':
'ENGINE': 'djongo',
'NAME': 'test_db',
'HOST': 'somewhere.com',
'PORT': 27017
【问题讨论】:
您需要发布您的设置。 @DanielRoseman 我在这里添加了我的数据库设置 【参考方案1】:首先:在 localhost 上创建一个到远程 mysql 服务器的 SSH 隧道
ssh -N -L 3306:127.0.0.1:3306 root@192.168.0.122
192.168.0.122 >> 是我的远程局域网服务器。
第二:使用 127.0.0.1 作为 Django 连接字符串上的 HOST。
DATABASES =
'default':
'ENGINE': 'django.db.backends.mysql',
'NAME': 'XXXX',
'USER': 'XXX',
'PASSWORD': 'XXXX',
'HOST': '127.0.0.1',
'PORT': '3306',
'OPTION':
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"
如果使用环境文件,则在 .env 中将 HOST 更改为 127.0.0.1。
这对我有用。
【讨论】:
【参考方案2】:似乎在某个地方,djongo 改变了数据库设置的结构。在浪费了几天的时间试图找到解决方案之后,我遇到了一个具有更新结构的页面,尝试将您的 DATABASE 结构设置为:
DATABASES =
'default':
'ENGINE': 'djongo',
'NAME': 'yourmongodb',
'CLIENT':
'host': 'some-host.or.ip',
'port': 27017,
'username': 'youruser',
'password': 'yourdbpass',
'authSource': 'yourcollection',
,
【讨论】:
【参考方案3】:您是否在 settings.py 文件中编辑了设置
DATABASES =
'default':
'ENGINE': 'django.db.backends.mysql',
'NAME': 'XXXX',
'USER': 'XXX',
'PASSWORD': 'XXXX',
'HOST': 'XXX.XXX.XXX.XXX',
'PORT': '3306',
'OPTION':
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"
【讨论】:
是的。我遵循了这种格式,但它不起作用 但是我正在通过 djongo 连接到 mongodb。它的文件说引擎行应该是'ENGINE':'djongo'以上是关于Django 总是连接到 localhost mongodb的主要内容,如果未能解决你的问题,请参考以下文章
Heroku部署后Django(djongo)无法连接到MondoDB Atlas
将 Flutter 连接到真实设备中的 localhost 服务器
Kafka 生产者连接到 localhost 而不是真实 IP