python遇到的问题及解决⽅法
⼀、
1.问题:
pycharm异常:
django2.2报错:UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xa6 in position 9737: illegal multibyte sequence 2.原因:
window控制台默认gbk编码,⽽我们通常⽤的是utf8
3.解决:
打开django/views下的debug.py⽂件,转到line331⾏:
with Path(CURRENT_DIR, ‘templates’, ‘technical_500.html’).open() as fh
将其改成:
with Path(CURRENT_DIR, ‘templates’, ‘technical_500.html’).open(encoding=“utf-8”) as fh
就成功了。
3.解决思路:
解决⽅法完全是依照异常信息来的。
⼆、
1.问题:
python manage.py makemigrations 报错
2.解决:
##错误1:
raise ImproperlyConfigured(‘mysqlclient 1.3.13 or newer is required; you have %s.’ % Database.version)
solution:
.\Lib\site-packages\django\db\backends\mysql.路径下到base.py, 修改如下内容:
#if version < (1, 3, 13): ==> if version < (1, 3, 3):
##错误2: query = query.decode(errors=‘replace’)
AttributeError: ‘str’ object has no attribute ‘decode’
solution:
去到python的安装路径: \Lib\site-packages\django\db\backends\mysql
open ./site-packages/django/db/backends/mysql/operations.py
将decode改为encode
##错误3:
File “C:\Python\Python37\lib\site-packages\django\template\backends\django.py”, line 125, in get_package_libraries “trying to load ‘%s’: %s” % (entry[1], e)
‘django.utils.deprecation’ (.\lib\site-packages\django\utils\deprecation.py)
三、
问题描述:
已有的model,修改之后,想重新建模,于是将migrations⽂件夹中除__init__.py之外其他⽂件都删掉,再次执⾏以下步骤python manage.py makemigrations确认成功,执⾏python manage.py migrate,提⽰No migrations to apply.
排查过程
python manage.py dbshell 进到数据库⾥⾯,查看是否表已存在
结果:表不存在
检查migrations⽂件
结果:⽂件没问题
python默认安装路径百度 google 各种搜,乱投医,各种尝试
2.解决⽅案
python manage.py dbshell 进到数据库中,执⾏delete from django_migrations where app=‘your_appname’;
python manage.py makemigrations(若migrations⽂件未删除,可不执⾏这⼀步)
python manage.py migrate 好啦,⼤功告成
原因分析
查看django_migrations表结构
建表语句:
CREATE TABLE “django_migrations” (“id” integer NOT NULL PRIMARY KEY AUTOINCREMENT, “app” varchar(255) NOT NULL, “name” varchar(255) NOT NULL, “applied” datetime NOT NULL);
原因
造成多次应⽤migrations失败的原因是,当前model是修改过的,原来的migrations已经被我删除,但是,重新⽣成的migrations使⽤递增整数记名,所以,在django_migrations表中0001,0002等前⾯⼏个数字的⽂件都已被记录,在Django看来,被记录了就相当于已应⽤,所以,会出现刚开始的No migrations to apply.
四、
Running migrations: No migrations to apply.(django不能创建数据库中的表的问题)
第⼀步:
删除该app名字下的migrations下的__init__.py等⽂件。
第⼆步:
进⼊数据库,到django_migrations的表,删除该app名字的所有记录。
第三步:执⾏下⾯这两条命令:(在项⽬⽬录下)
python manage.py makemigrations
python manage.py migrate
原因:
django_migrations表记录着数据库的对应表的修改记录。
每次修改后,都执⾏第三步的命令,然后在第⼀步的⽂件夹下⽣成修改的⽂件,django_migrations表记录修改的变更过程。
五、
django数据迁移命令执⾏成功,但未在数据库中⽣成表
原因:
1、因数据库默认字符集不是utf8,当上传中⽂字符时报错。
2、处理过程中删除了原数据表,重新迁移,数据库表未能创建
解决步骤:
1、修改数据库中相应表的字符集,上传数据失败。
2、修改整个数据库的字符集,上传数据失败。
3、修改mysql配置⽂件/etc/myf.d/serverf,重启数据库,上传数据失败
因表中⽆重要数据,故删除相应的表。再重新迁移。此时问题出现。
1、执⾏python manage.py makemigrations :未报错,但是已经创建过⼀4次,故没有任何改变
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论