Django 1.6:MySQL ERROR 1049(42000):未知数据库

时间:2014-06-19 16:53:12

标签: python database django django-models mysql-connector

根据官方网站上的django教程,django根据models.py中定义的模型创建数据库模式。但是数据库的默认引擎是sqlite3。它正在发挥作用。

现在当我为django安装了mysqlMysql Connector时,我试图创建一个遇到以下错误的数据库:

 mysql.connector.errors.ProgrammingError: 1049 (42000): Unknown database 'db.mysql.userdb'

我搜索了错误并找到了解决此问题的方法,但所有人都提到我必须使用MYSQL Shell自行创建数据库。但这不是我想要的!根据django网站,我必须定义我的模型,django创建数据库的模式! 我该怎么做?

提前致谢。

以下是我的sttings.py文件:

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import os

BASE_DIR = os.path.dirname(os.path.dirname(__file__))      

SECRET_KEY = '94sf3cp(#a^)9!^zrr^zr3dfdk0nz$*4=m#v19*v)j&q^o$#ym'

DEBUG = True

TEMPLATE_DEBUG = True

ALLOWED_HOSTS = []

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'website_user',
)

MIDDLEWARE_CLASSES = (
    '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 = 'Final_DBMI.urls'

WSGI_APPLICATION = 'Final_DBMI.wsgi.application'


DATABASES = {
    'default': {
        'ENGINE': 'mysql.connector.django',
        'NAME': 'db.mysql.userdb',
        'USER': 'hadi',
        'PASSWORD': '123456',
        'HOST': '127.0.0.1',
        'PORT': '3306'
    }
}

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True       

STATIC_URL = '/statics/'

更新 我使用这个doc并且根据有两种方法连接到mysql:

  • MySQLdb的
  • MySQL Connector / Python

我正在使用第二个。根据{{​​3}},应按以下方式将其添加到settings.py

DATABASES = {
    'default': {
        'NAME': 'user_data',
        'ENGINE': 'mysql.connector.django',
        'USER': 'mysql_user',
        'PASSWORD': 'priv4te',
        'OPTIONS': {
          'autocommit': True,
        },
    }
}

2 个答案:

答案 0 :(得分:3)

Django创建。它不会创建表所在的数据库;你必须这样做。

答案 1 :(得分:0)

像这样的数据库设置,

使用pip

在您的环境中安装mysql-python
pip install mysql-python

使用以下命令

在mysql中创建数据库(userdb)
create database userdb;

然后你的settings.py文件遵循这些设置,

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'userdb',
        'USER': 'mysql username',
        'PASSWORD': 'mysql password',
        'HOST': '127.0.0.1',
        'PORT': '3306'
    }
}

以下是参考链接https://docs.djangoproject.com/en/dev/ref/settings/#databases