django新增class的时候数据库格式出错

简介:

这几天开发频繁要求查看生产环境zookeeper的配置,于是就想在django里添加一个新的栏,以文本的形式,随时更新zookeeper的情况。


于是我就登陆了django,在model.py里添加一个新的class,如下:

1
2
3
4
5
6
7
8
#建立杭州测试ZK配置
class HZfunczk(models.Model):
     hzfunczk_remark = models.CharField(verbose_name= '杭州测试ZK配置' ,max_length=50000,blank= true )
     hzfunczk_signer = models.CharField(verbose_name= '登记人' ,max_length=30,default= 'system' )
     hzfunczk_signtime = models.DateField(auto_now_add=True)
 
     def __unicode__(self):
         return  self.domain_name


然后在django的目录下执行#python manage.py makemigrations,这一步没问题,但是在执行#python manage.py migrate的时候,就出现了下面的错误:

1.png


我开始认为是charfield写错了,应该写Textfield,于是更改了一下,但是保存之后,再执行#python manage.py migrate还是出错。其实这个错误主要原因就是因为我那个50000设置错了,因为字段hzfunczk_remark定义的长度50000超出了mysql的varchar的最大长度21845(在utf8编码情况下)。于是我就在model.py里把这个长度改成20000,保存之后,还是执行到#python manage.py migrate这一步,依旧爆上面的错误。于是我就干脆把这个class先删除掉,没想到都删除了,还是会爆错。


这就很奇怪了,我已经删掉了为啥还有这样的事儿?于是就干脆进入到数据库去看,由于我现在只知道列名叫hzfunczk_remark,所以我要根据这个列名去查它所在的表,maria反馈如下:

1
2
MariaDB [abccs]>  select  TABLE_SCHEMA, TABLE_NAME from information_schema.columns where COLUMN_NAME =  'hzfunczk_remark'
Empty  set  (0.02 sec)


好尴尬呀,数据库里压根就没有列名为“hzfunczk_remark”的表。然后由于#python manage.py migrate报错,现在无法启动django。遇到这种状况,就去django里的migrations文件夹,这个文件夹里有很多的py文件,它们记录着数据库的每一步操作,不过这里面的py还没有真正执行到数据库里,我找到当时添加class那个时间段的py文件,里面是这样的:

image.png


先把里面CharField改成TextField,然后把50000改成小于21845的就行了。或者把这个文件以及之后产生的所有文件都删除掉。重新的去make。


实在不行,还有一个万不得已的办法,几乎所有的数据库错误都可以用这个方法解决:将migrations文件夹下的文件除了__init__.py全部删掉,然后将数据库drop掉,重新建数据库。然后make和migrate,就可以使用一个新的数据库(但愿你永远用不到这个方法)。



最后的最后,如果您觉得本文对您升职加薪有帮助,那么请不吝赞助之手,刷一下下面的二维码,赞助本人继续写更多的博文!

wKioL1l16m3BMYDKAACPHEqd55Q687.jpg




 本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/2052559
相关文章
|
24天前
|
SQL 定位技术 数据库
深入探索Django ORM:高效数据库操作的秘诀####
本文旨在为读者揭开Django ORM(对象关系映射)的神秘面纱,通过一系列生动的比喻和详实的案例,深入浅出地讲解其核心概念、工作原理及高级特性。我们将一起探讨如何利用Django ORM简化数据库交互,提升开发效率,同时确保数据的一致性和安全性。不同于传统的技术文档,本文将以故事化的形式,带领读者在轻松愉快的氛围中掌握Django ORM的精髓。 ####
|
2月前
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
95 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
|
2月前
|
SQL Go 数据库
【速存】深入理解Django ORM:编写高效的数据库查询
【速存】深入理解Django ORM:编写高效的数据库查询
84 0
|
4月前
|
搜索推荐 前端开发 算法
基于用户画像及协同过滤算法的音乐推荐系统,采用Django框架、bootstrap前端,MySQL数据库
本文介绍了一个基于用户画像和协同过滤算法的音乐推荐系统,使用Django框架、Bootstrap前端和MySQL数据库构建,旨在为用户提供个性化的音乐推荐服务,提高推荐准确性和用户满意度。
319 7
基于用户画像及协同过滤算法的音乐推荐系统,采用Django框架、bootstrap前端,MySQL数据库
|
4月前
|
存储 关系型数据库 MySQL
基于python django 医院管理系统,多用户功能,包括管理员、用户、医生,数据库MySQL
本文介绍了一个基于Python Django框架开发的医院管理系统,该系统设计了管理员、用户和医生三个角色,具备多用户功能,并使用MySQL数据库进行数据存储和管理。
186 4
基于python django 医院管理系统,多用户功能,包括管理员、用户、医生,数据库MySQL
|
3月前
|
数据库 Python
django中数据库外键可以自定义名称吗
django中数据库外键可以自定义名称吗
|
4月前
|
数据采集 前端开发 算法
基于朴素贝叶斯算法的新闻类型预测,django框架开发,前端bootstrap,有爬虫有数据库
本文介绍了一个基于Django框架和朴素贝叶斯算法开发的新闻类型预测系统,该系统具备用户登录注册、后台管理、数据展示、新闻分类分布分析、新闻数量排名和新闻标题预测等功能,旨在提高新闻处理效率和个性化推荐服务。
|
4月前
|
监控 数据可视化 前端开发
基于python django生产数据与计划大屏,可链接数据库
本文介绍了一个基于Python Django框架开发的生产数据与计划大屏系统,该系统能够实时采集和展示生产数据,支持数据可视化和实时更新,以提高生产监控的效率和质量。
|
4月前
|
API 数据库 开发者
【独家揭秘】Django ORM高手秘籍:如何玩转数据模型与数据库交互的艺术?
【8月更文挑战第31天】本文通过具体示例详细介绍了Django ORM的使用方法,包括数据模型设计与数据库操作的最佳实践。从创建应用和定义模型开始,逐步演示了查询、创建、更新和删除数据的全过程,并展示了关联查询与过滤的技巧,帮助开发者更高效地利用Django ORM构建和维护Web应用。通过这些基础概念和实践技巧,读者可以更好地掌握Django ORM,提升开发效率。
51 0