表结构的修改

1、表结构修改后,原来表中已存在的数据,就会出现结构混乱,makemigrations更新表的时候就会出错

比如第一次建模型,漏了一个字段,后来补上了。(经常遇到模型字段修改)

重新makemigrations,然后报错

数据库规则:除了新建表,如果你再次增加字段,数据库会有一些自动检测的东西(比如有没有默认值,是否允许为空)
如果表中已经有数据,这个字段还是非空的,且没有设定默认值,后台检测不通过就会报错。

解决方法(有两种):
1、新增加的字段,设置允许为空。生成表的时候,之前数据新增加的字段就会为空。(null=True允许数据库中为空,blank=True允许admin后台中为空)
2、新增加的字段,设置一个默认值。生成表的时候,之前的数据新增加字段就会应用这个默认值(default=None,默认值为空)

删除0001_initial.py,再次makemigrations

接着再往数据库推送,python3 manage.py migrate

原来是自己在数据库手动添加过,不是通过django方式的。

于是手贱想删除表,删了再次执行,发现没有变化

删表有风险,可能误删其他表,如果表不多,所以还是新建一个库,环境干净(强迫症啊)

最后完美解决

------------------------------------------------------------------------------------------------------------------

更多细节,交流QQ群:823625453

转载于:https://www.cnblogs.com/hightech/p/10749051.html

Django models文件模型变更注意事项(表结构的修改)相关推荐

  1. frm ibd文件导入mysql_Mariadb,Mysql如何根据.frm和.ibd文件来恢复数据和表结构

    废话不多说直接进入正题,Mariadb,Mysql根据.frm和.ibd文件来恢复数据和表结构,大体分为三个步骤: 1.创建表结构 2.导入表结构 3.恢复表数据 接下来,我们按照这三个步骤一步一步恢 ...

  2. mysql ibd frm文件_Mariadb,Mysql如何根据.frm和.ibd文件来恢复数据和表结构

    废话不多说直接进入正题,Mariadb,Mysql根据.frm和.ibd文件来恢复数据和表结构,大体分为三个步骤: 1.创建表结构 2.导入表结构 3.恢复表数据 接下来,我们按照这三个步骤一步一步恢 ...

  3. MySQL数据库基础学习小终结:连接查询、表结构的修改、约束条件、MySQL与python交互

    目录 一.连接查询 1.内连接 2.外连接 二.表结构的修改--alter 1.修改表名 2.修改字段名 3.修改字段类型--modify 4.添加字段 (1)添加日期字段:datetime (2)e ...

  4. oracle改表结构,oracle 表结构的修改

    oracle 表结构的修改 更改表的结构 1.编辑表的字段 修改一个列的数据类型(一般限于修改长度,修改为一个不同类型时有诸多限制): 语法: ALTER TABLE 表名 MODIFY(列名 数据类 ...

  5. Django框架的模型层之多表操作

    目录 一 创建模型 二 表记录的增删改 一对多 多对多 三.基于对象的跨表查询 一对一查询(Author 与 AuthorDetail) 一对多查询(publish与book) 多对多查询 (Auth ...

  6. proto文件导入mysql_导出mysql表结构生成grpc需要的proto文件工具

    使用过grpc的同学都知道,写proto文件比较繁琐,尤其是写message,对应很多字段,为此写了一个简单的从mysql直接读取表结构,生成proto文件的工具. 工具的使用很简单,需要简单的配置, ...

  7. oracle改表结构,Oracle修改表结构

    修改表结构  -- 使用alert关键字 修改表名:alert table 原表名 rename to  新表名; --(1)向表中增加新列(添加字段) alert table 表名 add 添加的列 ...

  8. SQL语句查看表结构和修改字段长度

    MySQL 和 SQLserver 数据库: 查看表结构: select * from information_schema.columns where table_name='表名' 修改字段长度: ...

  9. 数据库表结构相关修改

    该文章主要内容为表结构的变化,包括表名修改.字段的新增.删除和修改,下面为具体内容: 一.新建表 1,Oracle create table oracle_test( name varchar(20) ...

最新文章

  1. 次小生成树(Prim + Kruaskal)
  2. Globus toolkit3.0
  3. Py之scikiti -survival:scikiti -survival库的简介、安装、使用方法之详细攻略
  4. sql字符串分隔函数
  5. 【数据结构】排序算法及优化整理
  6. NSMutable属性声明时为什么不能使用copy
  7. 简单有趣的c语言小程序,一个有趣的小程序
  8. Python 异常后变量的赋值
  9. “1251 – Client does not support authentication protocol requested by server;consider upgrading MySQL
  10. android sdk no space,Android SDK folder taking a lot of disk space. Do
  11. Django:ORM基本操作-CRUD,管理器对象objects,----->删除:删除单个数据,删除批量数据
  12. eclipse修改java热部署免重启tomcat在Host标签下增加Context直接将docBase指定为项目的WebContent路径
  13. C#泛型学习实例(简单易懂)
  14. MediaCodec进行编解码AAC(文件格式转换)
  15. Win7-64位 Cygwin编译Redis
  16. android 中tools命名空间的全解
  17. eclipse上svn创建分支、合并、切换
  18. 【BP回归预测】鲸鱼算法优化BP神经网络回归预测(多输入单输出)【含Matlab源码 1554期】
  19. mysql服务状态一直是启动解决方案
  20. The server encountered an internal error () that prevented it from fulfilling this request

热门文章

  1. Oracle 11g Release 1 (11.1) 查询优化器的访问路径
  2. 求助:如何在Vista系统环境下增加系统盘C盘的容量?
  3. js createElement appendChild createTextNode用法
  4. CSS 外补白(Margin) 内补白(Padding) 边框属性 定位(positioning)属性 布局(layout)属性
  5. HyperlinkButton——WP8控件学习
  6. 不写技术文档是个什么梗
  7. tcp断开连接的几种状态
  8. 建立索引要考虑的因素
  9. remap(地址重映射)机制
  10. 学会理解并编辑/etc/fstab