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)dbdjango(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:连接默认不存在的主要内容,如果未能解决你的问题,请参考以下文章