Django 无法同步数据库model相应字段问题
前言:今天也是充满bug的一天,脸上笑嘻嘻。。。。(继续,讲文明,懂礼貌)
1,问题描述,models中的字段设置的是浮点型,但是输出的结果总是int()类型
models
average_score = models.FloatField(verbose_name='平均分')
2、查找原因,首先进入数据库
mysql #进入数据库 show databases; use mydata; 进入你的数据库 des knowledge_knowledgebase; 查看相应字段
然后就会发现,是的,现在average_acore的字段是int()没错的
3、这时候你就会说同步一下数据库不就好了,然而并不是我太傻太天真。
python manage.py makemigrations 报错
django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_initial is applied before its dependency users.0001_initial on database 'default'
原因:大概原因是因为admin的模型依赖了之前默认的user模型吧
4、最终解决方案
首先将migrations下的数据删除,然后在migrate肯定是可以的,但是测试需要我必须保留其中的数据,解决方案如下。
a、首先建一个新表
1、drop database mydata2; 2、 create database mydata2 character set utf8 collate utf8_bin
b、在setting中指向该数据库
c、数据reset
sh reset.sh 该文件内容(该内容就是直接删除migrations目录下的数据,重新编译)
#!/usr/bin/env bash
rm -rf user_center/mi*
rm -rf alert_center/mi*
rm -rf count_center/mi*
rm -rf cmdb_center/mi*
rm -rf work_center/mi*
rm -rf knowledge/mi*
rm -rf call_center/mi*
rm -rf report_center/mi*
python manage.py makemigrations --empty work_center
python manage.py makemigrations --empty cmdb_center
python manage.py makemigrations --empty call_center
python manage.py makemigrations --empty report_center
python manage.py makemigrations --empty user_center
python manage.py makemigrations --empty count_center
python manage.py makemigrations --empty alert_center
python manage.py makemigrations --empty knowledge
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
d、将原数据库mydata的数据导出
mysqldump -uroot mydata > mcenter2.sql
e、进入mysql环境
show databases; use mydata2; #新表 desc knowledge_knowledgebase; source /home/mcenter_backstage/mcenter_backstage/mcenter2.sql; #将原表的数据同步到新表 alter table knowledge_knowledgebase modify column average_score float(5,2); #更改字段的数据类型 alter table knowledge_knowledgebase modify column create_time datetime; #更改字段的数据类型
总结:当数据库中包含数据的时候,无法migrate成功,所以只能更改数据库中的相应字段,这个办法算是比较笨了。后续找到解决办法会更新。
Django 无法同步数据库model相应字段问题的更多相关文章
- Django入门:操作数据库(Model)
Django-Model操作数据库(增删改查.连表结构) 一.数据库操作 1.创建model表 基本结构 1 2 3 4 5 6 from django.db import model ...
- django无法同步数据库 Error loading MySQLdb module: No module named ‘MySQLdb‘
最近在学习Python,打算先看两个在线教程,再在github上找几个开源的项目练习一下,在学到“被解放的姜戈”时遇到django同步数据库时无法执行的错误,记录一下. 错误现象: 执行python ...
- django 修改字段后,同步数据库,失败:django.db.utils.InternalError: (1054, "Unknown column 'api_config.project_id_id' in 'field list'")
问题原因是,修改字段后,同步失败了,然后执行查询的时候,就会提示这个错误,这个字段没有 最暴力的方法可以直接在数据库中修改字段,但是修改后,models没同步,可能会存在问题,因此开始我的百度之旅(这 ...
- 自动化监控系统(二)连接数据库,创建app,添加model,同步数据库
数据库我使用:mysql5.7 程序连接数据库的模块:pymysql 一.创建数据库: dbname:automatedmonitor 二.使用pip安装pymysql,这里我直接在pycharm上安 ...
- Django数据库设计中字段为空的方式
今天在做数据库设计的时候,设计了如下User表,其中我把email和phone字段设置为允许为空: class User(models.Model): username = models.CharFi ...
- Django中的Model(字段)
Model Django中的model是用来操作数据库的,Model是一个ORM框架,我们只需要关心model的操作,而不需要关心到底是哪一种数据库. 一.基本知识: 数据库引擎: Django中自带 ...
- django model常用字段类型
摘自 http://www.cnblogs.com/wt869054461/p/4014271.html V=models.AutoField(**options) #int:在Django代码内是自 ...
- Django---ORM的常用字段和自定义字段,DjangoORM字段与数据库类型对应,字段参数和Meta的参数,Django的admin操作,13中orm操作方法,单标的双下方法
Django---ORM的常用字段和自定义字段,DjangoORM字段与数据库类型对应,字段参数和Meta的参数,Django的admin操作,13中orm操作方法,单标的双下方法 一丶ORM常用字段 ...
- Django 同步数据库的时候app中的models的表没有成功创建
出现 no changes detected python3 manage.py makemigrations --empty blog # blog就是你的app名字,此处要写成自己的app名字 ...
随机推荐
- ubuntu 报错 Unable to locate package
解决方案参考 https://blog.csdn.net/u010622613/article/details/83017163
- Introduction to Writing Functions in R
目录 在R中编写函数 args(函数名) 创建一个函数的步骤 1.default args Passing arguments between functions Checking arguments ...
- Git - 08. git branch
概述 简单描述以下, git branch 讲解的目的, 只是方便新手入门, 基本都是最简单的操作 所以东西可能不全 一是 我不理解 二是 有的东西出现, 可能会让新手产生误解 准备 os win10 ...
- 实现ENSP模拟器与物理主机、虚拟机通信
一.环境描述 我需要实现华为模拟器中的网络设备和物理主机.虚拟机通信.这篇文章中以ENSP中的路由器为例,实现它和物理主机.虚拟机的通信. 二.实现方法 在ENSP中借助Cloud来实现. 在Clo ...
- 《TCP/IP入门经典》摘录--Part 3
TCP/IP协议系统 3.子网划分和CIDR 子网 划分网络 为什么需要划分子网? 子网划分就是在网络 ID 之下提供了第 2 层逻辑组织.路由器能够把数据报发送给网络里的某个子网地址(一般对应于一个 ...
- 网页前端导出CSV,Excel格式文件
通过自己实际测试有以下几种方法 方法一通过a标签实现,把要导出的数据用“\n”和“,”拼接成一个字符串,然后把字符串放到href中,这种方法只支持chrome,firefox等非ie浏览器 html页 ...
- PyQt5学习笔记-从主窗体打开一个子窗体
PyQt5学习笔记-从主窗体打开一个子窗体 软件环境: Eric6+Python3.5+PyQt5 试验目标: 1.点击菜单项Open,打开一个子窗体 2.点击按钮Open,打开一个子窗体 主窗体设计 ...
- 03-Java基础语法【 流程控制语句】
重要知识记录: 1.流程控制 顺序结构:根据编写的顺序,从上到下进行运行. 2.判断语句 1)判断语句1--if if(判断条件){ 执行语句: } 2)判断语句2--if...else if(判断条 ...
- js面向对象的程序设计 --- 上篇(理解对象)
前言 ECMAScript中没有类的概念,因此它们的对象与基于类的语言中的对象有所不同. ECMA-262把对象定义为:"无序的集合属性,其属性可以包含基本值,对象或者函数".正因 ...
- MYSQL之路练习题
题目换成求平均薪水的等级最高的部门的部门名称