报错:Django

#####(1)

Django项目迁移数据库报错: ‘decode‘

报错翻译:AttributeErrer: 'str'对象没有'decode'属性

解决:报错点进去 将decode修改为encode

保存时选第一个 I want to edit this file anyway (无论如何都要编辑这个文件)

#####(2)

执行迁移python manage.py makemigrations

报错 No changes detected

执行迁移python manage.py makemigrations --goods         #goods为需要迁移的子应用名字

报错 manage.py: error: unrecognized arguments:

报错翻译:Manage.py:错误:无法识别的参数:

原因:可能子应用下 migrations目录下的 __init__.py文件被误删,

解决:在goods子应用下migrations的文件下 手动添加上__init__.py文件 就行了

#####(3)

报错:D:\Course\P5s\p5_ZUOYE\pro_728>python manage.py makemigrations
C:\Users\86155\AppData\Local\Programs\Python\Python37\lib\site-packages\django\core\management\commands\makemigrations.py:109: RuntimeWarning: Got an error checking a consistent migration history performed
for database connection 'default': (1049, "Unknown database 'pro_728'")
  RuntimeWarning,
Migrations for 'goods':
  goods\migrations\0001_initial.py
    - Create model Goods

报错翻译:对于数据库连接“default”:(1049,“未知数据库‘pro_728’)

原因:在没有pro_728这个库的情况下写好模型类直接进行迁移,

没有创建pro_728库的情况下直接迁移python manage.py makemigrations 可能会出现目前所遇到的以下两种情况:

1> 通常情况下只会在goods子应用的migrations目录下生成0001_initial.py,此时只需要删除生成的0001_initial.py迁移文件,

然后在mysql中创建pro_728库,再次进行python manage.py makemigrations makemigrations 就ok了,

接着执行迁移python manage.py migrate 都没有问题。

2> 也有可能会出现

这是说明django可能是根据源代码内置的功能帮你生成了一个空文件,

解决:在mysql->data文件下,找到‘pro_728’,删除此文件,  此时再去mysql数据库创建这个库就可以创建了。

接着就是迁移,执行迁移的步骤了。

#####(3-2)

报错:mysql> drop database pro_728;
ERROR 3679 (HY000): Schema directory '.\pro_728\' does not exist

报错翻译:错误3679 (HY000):架构目录'。\pro_728\'不存在

原因:当数据库中的库无法删除时 提示这个错误 是因为mysql-data 文件下没有这个库

解决:此时需要进入mysql->data文件下 手动添加这个名为pro_728的文件

再次进入mysql数据库进行drop database pro_728; 操作删除

#####(3)总结:在mysql数据库进行操作时 mysql-data文件中必须有这个库名的文件夹,如果没有,即使是在mysql数据库中删除这个库,也是无法执行命令的。


#####(4)

报错:django.db.utils.OperationalError: (1170, "BLOB/TEXT column 'contents' used in key specification without a key length")

报错翻译:django.db.utils。操作错误:(1170,“在没有键长度的键规范中使用的BLOB/TEXT列‘contents’”)

原因:可能是 models模型类的字段的类型(定义不规范)

也有可能是 migrations 中已经生成过一次 0001_initial.py

######(5)

每次迁移会生成迁移记录 ,在数据库中执行sql语句 删除的字段等迁移记录中仍存在,需手动删除该条信息,不然会影响到第二次迁移,(每次迁移都会基于前几次的迁移)

######(6)

给表增加外键字段 迁移时 该表中已有旧数据 需要给这些数据添加一个新字段的默认值

 

######(7)django.db.utils.OperationalError: (1050, "Table 'exam' already exists")

 python manage.py migrate 子应用名 --fake

注:第一次项目模型类是由sql文件导入生成表,第二次新建表,此时在model中注释新建的模型类(因为考虑到数据库中已经存在之前的表),1. makemigrations先生成第一个迁移记录,也就是之前的迁移记录。2.放开model注释,生成第二次迁移记录,然后migrate迁移,此时可能会报错说新建的表已经存在,输入python manage.py migrate 子应用名 --fake 完成迁移,数据库中的表会刷新。

#############

卷宗错误目标文件不正确         去sttings里找 可能是项目名不对称

迁移数据库报错也有可能是     sttings中 子应用没配置对  导致No changes detected等其他报错

提示csrf阻止        可能是stting中 没注释 或者是 没有配置白名单

》》》》  File "/home/online-training-system/backend/urls.py", line 20, in <module>
    path('admin/', admin.site.urls),        //注释这个
  File "/home/myenv/lib/python3.10/site-packages/django/utils/functional.py", line 266, in inner
    self._setup()
  File "/home/myenv/lib/python3.10/site-packages/django/contrib/admin/sites.py", line 595, in _setup
    AdminSiteClass = import_string(apps.get_app_config("admin").default_site)
  File "/home/myenv/lib/python3.10/site-packages/django/apps/registry.py", line 165, in get_app_config
    raise LookupError(message)
LookupError: No installed app with label 'admin'.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值