Python与数据库迁移过程中问题解决

1.问题

django.db.utils.OperationalError: (1051, "Unknown table 'mydorm.users_studen t'")`

原因:
在navicat中删除了数据库中某表的字段
解决办法:
在终端输入
python manage.py migrate --fake
然后进行迁移即可(注:数据需要重新录入)
python manage.py migrate
2.问题

django.db.utils.OperationalError: (1091, "Can't DROP 'xxxxx'; check that column/key exists")

解决办法:
python manage.py migrate field --fake

Python与数据库迁移过程中问题解决_第1张图片

在执行python manage.py migrate field --fake APP名 表名,比如我这里执行的就为migrate --make field 0003_people_修改日期
3.问题

django.db.utils.InternalError: (1366, “Incorrect string value: ‘\xE8\x96\x9B\xE8\x89\xB3…’ for column ‘sname’ at row 1)

解决办法:修改编码

CREATE DATABASE 数据库名 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

ALTER TABLE 表名 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

alter table 表名 change 列名 varchar(40) character set utf8;

4.问题

django.db.utils.OperationalError: (1060, "Duplicate column name 'to_user_id'")`

django在migrate时报错,意思是字段名重复
应该是之前创建后删除之类操作导致的,查看表中字段XXX已存在

解决办法:
1, 在django的migrations目录下,在新生成的记录中,找到新建字段的语句,将其复制到前一个记录里面
2, 然后将后面(新生成文件)含有新建字段的记录删除。
3,再次更新迁移:
python manage.py makemigrations
python manage.py migrate
4.问题

django.db.utils.OperationalError: (1138, 'Invalid use of NULL value')

出现该错误的原因可能是因为已存在的数据的‘编号’列为null,与not null的设置冲突。(查到的原因)。
解决办法:
删除历史迁移记录,重新迁移就可以

参考:
https://blog.csdn.net/res2677/article/details/111353325
https://www.cnblogs.com/-xunmi-/p/12856372.html
https://www.cnblogs.com/hany-postq473111315/p/14379429.html

你可能感兴趣的:(python,django,mysql)