这几天在学Django,迁移数据库到mysql的时候,总会遇到很多问题,所以就记录下来.
1.软件版本
mysql 8.x 以上
Django3.x以上
pycharm 2021.1.2
Python 3.9.5

2.Django配置mysql数据库
配置数据库原文:Django中如何使用Mysql数据库-Django,Django中文网!
项目名/setting.py
DATABASES = {
'default': {
# 系统默认使用sqlite3数据库
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': BASE_DIR / 'db.sqlite3',
# 这里使用mysql
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test_db',
'USER': '数据库账号',
'PASSWORD': '数据库密码',
'HOST': '', # 留空默认localhost
'PORT': '3306',
}
}
3.迁移
注意
8.x加密方式:caching_sha2_password,
5.x加密方式为:mysql_native_password
所以要改成mysql_native_password
# 迁移数据库
python manage.py makemigrations
python manage.py migrate
不然迁移时会报错,报错如下:
RuntimeWarning: Got an error checking a consistent migration history performed
for database connection 'default': (2059, <NULL>)
warnings.warn
(No changes detected)
修改方式:
1.由cmd或者pycharm的Terminal进入命令行,懂的都懂,不多说
2.登录到mysql: mysql -uusername -ppassword
参数说明:[-u]后面接的是登录数据库的账号,[-p]后面是密码
3.查看你的账号加密方式
use mysql
select user,plugin from user
4.修改(我这里已经修改好了)
alter user '用户名'@'localhost' identified with mysql_native_password by '你的密码';
mysql> select user,plugin,host from user;
ERROR 1046 (3D000): No database selected
mysql> use mysql
Database changed
mysql> select user,plugin,host from user;
+------------------+-----------------------+-----------+
| user | plugin | host |
+------------------+-----------------------+-----------+
| mysql.infoschema | caching_sha2_password | localhost |
| mysql.session | caching_sha2_password | localhost |
| mysql.sys | caching_sha2_password | localhost |
| root | mysql_native_password | localhost |
+------------------+-----------------------+-----------+
4 rows in set (0.00 sec)
mysql> alter user '用户名'@'localhost' identified with mysql_native_password by '你的密码';
迁移完成之后,查看数据库,发现数据库并没有数据表.





本文记录了在使用Django 3.x及以上版本将数据库迁移至MySQL 8.x过程中遇到的问题及解决方案。主要涉及MySQL 8.x的加密方式变化,需将加密方式改为mysql_native_password以避免迁移报错。通过CMD或PyCharm终端登录MySQL,使用SQL命令查看并修改用户加密方式,然后进行迁移操作。然而,迁移后发现数据库中并未出现数据表。
1131

被折叠的 条评论
为什么被折叠?



