Django.db.utils.ConnectionDoesNotExist:连接默认不存在
Posted
技术标签:
【中文标题】Django.db.utils.ConnectionDoesNotExist:连接默认不存在【英文标题】:Django.db.utils.ConnectionDoesNotExist: The connection default doesn't exist 【发布时间】:2019-03-31 19:29:13 【问题描述】:我正在尝试使用 mongoengine(0.6.0) 将 mongo(v4.0.3)db 与 django(v1.11) 连接起来强>驱动。它显示连接不存在。
我的settings.py文件如下:
import os
import mongoengine
dbname = 'newdb'
mongoengine.connect(dbname, host='127.0.0.1', port = 27017)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
SECRET_KEY = ''
DEBUG = True
ALLOWED_HOSTS = []
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'mdbcapp',
]
MIDDLEWARE = [
'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',
]
ROOT_URLCONF = 'multiple_databses_connections.urls'
TEMPLATES = [
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS':
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
,
,
]
WSGI_APPLICATION = 'multiple_databses_connections.wsgi.application'
DATABASES =
'dfault':
'ENGINE': '',
'NAME' : ''
AUTH_PASSWORD_VALIDATORS = [
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
,
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
,
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
,
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
,
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
STATIC_URL = '/static/'
我收到以下错误:
Traceback(最近一次调用最后一次):
文件“manage.py”,第 22 行,在 execute_from_command_line(sys.argv) 文件“/usr/local/lib/python2.7/dist-packages/django/core/management/init.py”, 第 363 行,在 execute_from_command_line 实用程序.execute() 文件“/usr/local/lib/python2.7/dist-packages/django/core/management/init.py”, 第 337 行,执行中 django.setup() 文件“/usr/local/lib/python2.7/dist-packages/django/init.py”,第 27 行, 在设置中 apps.populate(settings.INSTALLED_APPS) 文件“/usr/local/lib/python2.7/dist-packages/django/apps/registry.py”,行 108, 在人口 app_config.import_models() 文件“/usr/local/lib/python2.7/dist-packages/django/apps/config.py”,行 202,在 import_models self.models_module = import_module(models_module_name) import_module 中的文件“/usr/lib/python2.7/importlib/init.py”,第 37 行 进口(名称) 文件“/usr/local/lib/python2.7/dist-packages/django/contrib/auth/models.py”, 第 4 行,在 从 django.contrib.auth.base_user 导入 AbstractBaseUser、BaseUserManager 文件“/usr/local/lib/python2.7/dist-packages/django/contrib/auth/base_user.py”, 第 52 行,在 类 AbstractBaseUser(models.Model): 文件“/usr/local/lib/python2.7/dist-packages/django/db/models/base.py”, 第 124 行,新 new_class.add_to_class('_meta', 选项(meta, app_label)) 文件“/usr/local/lib/python2.7/dist-packages/django/db/models/base.py”, 第 330 行,在 add_to_class value.contribute_to_class(cls, 名称) 文件“/usr/local/lib/python2.7/dist-packages/django/db/models/options.py”, 第 214 行,contribute_to_class self.db_table = truncate_name(self.db_table, connection.ops.max_name_length()) 文件“/usr/local/lib/python2.7/dist-packages/django/db/init.py”,行 33、在getattr中 返回getattr(连接[DEFAULT_DB_ALIAS],项目) 文件“/usr/local/lib/python2.7/dist-packages/django/db/utils.py”,第 208 行, 在 getitem 中 self.ensure_defaults(别名) 文件“/usr/local/lib/python2.7/dist-packages/django/db/utils.py”,第 178 行, 在确保默认值 raise ConnectionDoesNotExist("连接 %s 不存在" % alias) django.db.utils.ConnectionDoesNotExist:连接默认不存在
我该如何解决这个问题?
【问题讨论】:
您能用DATABASES
设置更新您的问题吗?敏感物品可以更换。并确保您可以使用 mongo 客户端连接到您的数据库。
如您所见,DATABASES['default']
为空。希望这个django mongodb docs 可以帮助你。 PS:4个空格的缩进会让你的部分文本看起来像代码。
DATABASES = 'default': 'ENGINE': 'django_mongodb_engine', 'NAME' : 'newdb', 'USER': 'admin', 'PASSWORD': 'admin', 'HOST ':'127.0.0.1','PORT':'27017',#'SUPPORTS_TRANSACTIONS':假,
我在上面尝试过,但我得到了这些错误。,尝试使用 'django.db.backends.XXX',其中 XXX 是以下之一:'mysql'、'oracle'、'postgresql'、' sqlite3' 错误是:没有名为 util 的模块
【参考方案1】:
您只使用 Mongo 引擎。但在设置文件中,数据库 ENGINE 键是必需的。在ENGINE
中添加这一行:
DATABASES =
'default':
'ENGINE': 'django.core.cache.backends.dummy.DummyCache',
'NAME': 'mydatabase',
但它可能会抛出一个错误,比如数据库配置不正确,这是可以忽略的。
更多信息参考链接 https://docs.djangoproject.com/en/dev/ref/settings/#backend
【讨论】:
DATABASES = 'default': 'ENGINE': 'django_mongodb_engine', 'NAME' : 'newdb', 'USER': 'admin', 'PASSWORD': 'admin', 'HOST ':'127.0.0.1','PORT':'27017',#'SUPPORTS_TRANSACTIONS':假, 我在上面尝试过,但我得到了这些错误。,尝试使用 'django.db.backends.XXX',其中 XXX 是以下之一:'mysql'、'oracle'、'postgresql'、' sqlite3' 错误是:没有名为 util 的模块 djano_mongodb_engine 是第三方包。你安装了吗? 默认django没有mongodb的数据库引擎。所以有第三方库将为 django 提供 mongo 数据库引擎。如果您不想为 mongodb 引擎使用第三方插件,我们必须在设置文件中为数据库键提供虚拟数据库引擎 @vekatesh ,是的,我已经安装了它【参考方案2】:Sqlite的默认设置
DATABASES =
'default':
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
MySQL 设置
DATABASES =
'default':
'ENGINE': 'django.db.backends.mysql',
'NAME': 'my_db_name',
'USER': 'root',
'PASSWORD': '',
'HOST':'localhost',
'PORT':'3306'
【讨论】:
以上是关于Django.db.utils.ConnectionDoesNotExist:连接默认不存在的主要内容,如果未能解决你的问题,请参考以下文章