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

1 投票
2 回答
4840 浏览
提问于 2025-04-18 10:23

根据django官方网站上的教程,django会根据在models.py中定义的模型来创建数据库的结构。不过,默认使用的数据库引擎是sqlite3,而且它是可以正常工作的。

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

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

我搜索了一下这个错误,找到了几种解决方案,但它们都提到我需要使用MYSQL Shell自己创建数据库。但这并不是我想要的!根据django网站的说法,我只需要定义我的模型,django就会自动创建数据库的结构!那我该怎么做呢?

提前谢谢你。

以下是我的settings.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/'

更新
我正在使用这个文档,根据里面的内容,有两种方式可以连接到mysql:

  • MYSQLdb
  • MySQL Connector/Python

而我使用的是第二种。根据MYSQL网站的说明,它应该以以下方式添加到settings.py中:

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

2 个回答

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

4

Django会创建,但是它不会创建这些表所在的数据库;这个数据库你需要自己去创建。

撰写回答