1. 修改项目下setting.py文件下,DATABASES字典中的default字典中的内容:
```python
DATABASES = {
'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'ENGINE': 'django.db.backends.mysql',
'NAME': 'danger', # 使用的数据库名称,需在mysql中先创建该数据库
'USER': 'root', # 登录的用户名
'PASSWORD': 'mysql', # 用户名密码
'HOST': 'localhost', # 访问的数据库IP
'PORT': '3306' # 访问数据库端口号
}
}
```
2. 以“danger”为例,在mysql中创建数据库
```sql
create database danger;
```
3. 执行 python3 manage.py makemigrations创建模型迁移
4. 执行时,遇到了报错内容
“django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.”
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200429225413222.png#pic_center)
5. 解决该问题可采用两种方法:
1)直接安装mysqlclient
2)修改项目下的\_\_init\_\_.py文件:
```python
import pymysql
pymysql.install_as_MySQLdb()
```
6. 笔者采用了第一种方法直接安装mysqlclient,安装方法:
1)安装依赖包:sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
2)pip install mysqlclient
7. 再次执行 python3 manage.py makemigrations,发现上面的报错已经没有了,有一条新的报错:
django.db.utils.OperationalError: (1698, "Access denied for user 'root'@'localhost'")
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200429231701778.png#pic_center)
8. 原因为没有考虑到mysql用root用户登录,需要系统超级用户权限,即
sudo mysql -uroot -pmysql
9. 在mysql中新建一个用户
```sql
grant all privileges on `danger`.* to 'test'@'localhost' identified by '123456'
```
10. 再修改setting.py文件
```python
DATABASES = {
'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'ENGINE': 'django.db.backends.mysql',
'NAME': 'danger', # 使用的数据库名称,需在mysql中先创建该数据库
'USER': 'test', # 登录的用户名
'PASSWORD': '123456', # 用户名密码
'HOST': 'localhost', # 访问的数据库IP
'PORT': '3306' # 访问数据库端口号
}
}
```
11. 执行 python3 manage.py makemigrations成功创建模型迁移
12. 执行迁移生成表python3 manage.py migrate
13. 完成
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69972732/viewspace-2689356/,如需转载,请注明出处,否则将追究法律责任。