django迁移数据库到mysql 8.x

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

这几天在学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 '你的密码';

迁移完成之后,查看数据库,发现数据库并没有数据表.

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值