最近在windwos 10环境中搭建Django开发环境,用的是Mysql数据库,发现使用最新版本的mysql 8.0 Django在连接时会报错。
具体报错为:
django.db.utils.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: NO)")
如果报using password: YES可以尝试修改密码, 但using password: NO而且配置正确,目前个人无法解决这个问题,把mysql版本降到5.7.22后一切正常。
下载地址:msi安装包点下面页面。
https://dev.mysql.com/downloads/mysql/5.7.html#downloads
连接过程:
1、创建django工程
django-admin startproject mysite
2、创建APP
cd mysite
python manage.py startapp netnpm
3、安装mysql并创建数据库(建意使用5.x版本)
CREATE DATABASE netnpm CHARACTER SET UTF8;
flush privileges;
4、修改models.py,建立自己的模型
from django.db import models
class Devices(models.Model):
Dev_name = models.CharField(max_length=30)
Dev_manu = models.CharField(max_length=20)
Dev_type = models.CharField(max_length=20)
Dev_sn= models.CharField(max_length=20)
Mgt_ip = models.CharField(max_length=30)
Generator = models.CharField(max_length=30)
Cabinet = models.CharField(max_length=10)
Production_date= models.DateTimeField()
Online_date= models.DateTimeField(auto_now_add=True)
His_conf=models.TextField()
Curr_conf=models.TextField()
5、修改settings.py
#增加应用
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'netnpm'
]
修改DB设置
DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
# }
'default': {
'ENGINE': 'django.db.backends.mysql', # or mysql.connector.django
'NAME': 'netnpm',
'USER': 'root',
'PASSWORD': '123456',
'HOST': 'localhost',
'PORT': '3306',
}
}
6、安装pymysql,mysqlclient
pip install pymysql
pip install mysqlclient
7|、修改APP下的init.py新增以下内容
import pymysql
pymysql.install_as_MySQLdb()
8、同步DB
python manage.py sqlmigrate
python manage.py migrate