Backend - Django makemigrations

目录

一、迁移命令

(一)前提

(二)生成迁移文件

(三)执行迁移

二、迁移问题

1. Error:No changes detected

2. Error:You are trying to add a non-nullable field 'XXX' to XXX without a default 

解决方法(1)根据系统提供的选项,选择1

解决方法(2)根据系统提供的选项,选择2

        ① 增加 null = True 属性

        ② 增加 default = " "  属性

        ③ 删除有问题的model

        ④ 检查migrations文件

3. Error:django.db.utils.OperationalError: connection to server at "10.XXX.X.X", port 5432 failed: FATAL:  password authentication failed for user "XXX"

4. Error:File "D:\XXX\venv368\lib\site-packages\django\db\migrations\operations\models.py", line 677, in state_forwards。model_state = state.models[app_label, self.name_lower]。KeyError: ('luoboapp', 'Book')

原因:

解决:

5. File "D:\XXX\venv368\lib\site-packages\django\db\backends\utils.py", line 84, in _execute。return self.cursor.execute(sql, params)。django.db.utils.IntegrityError: column "author_id_id" of relation "Book" contains null values

原因:

解决:


一、迁移命令

(一)前提

        若是修改 / 新增 表结构,需先保证原来产生的迁移文件还保留着。

(二)生成迁移文件

# 终端执行
python manage.py makemigrations BookApp# 其中,BookApp是Application专案名,方便找到唯一的models.py文件
# Application具体是在settings.py文件中设置的。即:INSTALLED_APPS = ['BookApp']

(三)执行迁移

# 终端执行
python manage.py migrate

二、迁移问题

1. Error:No changes detected

        原因:未指定执行的Application。

        解决如下:

# 终端执行
# 1.这是遇到问题的终端命令
python manage.py makemigrations BookApppython manage.py migrate# 2.这是修改过后的终端命令
python ./manage.py makemigrations BookApppython manage.py migrate

2. Error:You are trying to add a non-nullable field 'XXX' to XXX without a default 

解决:

解决方法(1)根据系统提供的选项,选择1

        选择1,则代表系统自动设置默认属性,并让用户提供一个默认值。

        即,操作:先输入1,回车,再输入任意值,回车。

        若还有其他栏位也是出现这种情况,继续选择1,输入默认值。

解决方法(2)根据系统提供的选项,选择2

        选择2,则用户自定义设置。

        即,操作:输入2,直接退出。

        输入2退出指令后,再接着用以下其一操作来解决:

        ① 增加 null = True 属性

                操作:给字段添加允许为空的属性,下指令,然后恢复字段,又下指令(该操作类似于系统选项1的解决办法)。

        ② 增加 default = " "  属性

                操作:给字段添加默认值的属性,下指令,然后恢复字段,又下指令。

        ③ 删除有问题的model

                操作:删除该model,下指令,然后恢复model,又下指令。

        ④ 检查migrations文件

                注意:若确定栏位没有问题,则确保之前的migrations文件没有问题。

3. Error:django.db.utils.OperationalError: connection to server at "10.XXX.X.X", port 5432 failed: FATAL:  password authentication failed for user "XXX"

        解决:确保项目settings.py文件上设置的数据库 'USER' 和 'PASSWORD' 的值,与在 PostgreSQL数据库 中创建的用户名和密码匹配。

4. Error:File "D:\XXX\venv368\lib\site-packages\django\db\migrations\operations\models.py", line 677, in state_forwards。model_state = state.models[app_label, self.name_lower]。KeyError: ('luoboapp', 'Book')

原因:

该model(如Book)被其他model(如Library)进行了外键关联,在其他model有一些栏位的变动并下迁移指令时,会寻找该model(如Book)。

若该model(如Book)此时已经重命名了(系统在最后才会更新该model名,如LuoboBook,而其他model关联的是旧该model名,如Book),则其他model就找不到该model(如LuoboBook),则会报错。

解决:

在执行迁移文件时,选择不要重新命名Book模型名。输入N。

如 Did you rename the luoboapp.Book model to LuoboBook? [y/N] N

再操作:把model还原成以前的model名(如Book)。再删掉新生成的migration文件,重新下指令。生成新的migration文件后,再将model名改成新名字(如LuoboBook)。再下指令,生成第二个新的migration文件。然后就能成功执行migrate。

5. File "D:\XXX\venv368\lib\site-packages\django\db\backends\utils.py", line 84, in _execute。return self.cursor.execute(sql, params)。django.db.utils.IntegrityError: column "author_id_id" of relation "Book" contains null values

原因:

        该model有新增的字段,但是该model对应的数据库表还存在原来的数据记录。

解决:

        清空该model对应的表的所有数据。

以上大部分问题是数据库同步有误、或migrations文件有冲突。

若实在找不到方法解决类似问题,则使用简单粗暴的方法。

即,把migrations文件夹的所有py文档删除(除了__init__.py),再把数据库删除重新创建。若担心操作有误,可以提前备份。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/197937.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[读论文]BK-SDM: A Lightweight, Fast, and Cheap Version of Stable Diffusion

github: GitHub - Nota-NetsPresso/BK-SDM: A Compressed Stable Diffusion for Efficient Text-to-Image Generation [ICCV23 Demo] [ICML23 Workshop] ICML 2023 Workshop on ES-FoMo 简化方式 蒸馏方式(训练Task蒸馏outKD-FeatKD) 训练数据集 评测指标…

在intelliJ spring boot gradle插件3.2.0中未找到匹配的变量

我正在尝试使用spring启动Gradle插件的版本3.2.0。这是我的build.gradle文件: plugins {id javaid org.springframework.boot version 3.2.0id io.spring.dependency-management version 1.1.4 }group com.yaxin version 0.0.1-SNAPSHOTjava {sourceCompatibilit…

GPIO的使用--时钟使能含义--代码封装

目录 一、时钟使能的含义 1.为什么要时钟使能? 2.什么是时钟使能? 3.GPIO的使能信号? 二、代码封装 1.封装前完整代码 2.封装结构 封装后代码 led.c led.h key.c key.h main.c 一、时钟使能的含义 1.为什么要时钟使能&#xff1f…

Python开发运维:Python 3.8 常用标准库

目录 一、理论 1.Python3.8 标准库 2.常用标准库 二、问题 1.Python 正则表达式如何实现 一、理论 1.Python3.8 标准库 (1)官网 Python 标准库 — Python 3.8.17 文档 (2)其他版本下拉列表查询 2.常用标准库 &#xff0…

MySQL笔记-第01章_数据库概述

视频链接:【MySQL数据库入门到大牛,mysql安装到优化,百科全书级,全网天花板】 文章目录 第01章_数据库概述1. 为什么要使用数据库2. 数据库与数据库管理系统2.1 数据库的相关概念2.2 数据库与数据库管理系统的关系2.3 常见的数据库…

Linux--网络编程-ftp(TCP)网络通信-文件交互

项目要求:实现以下内容 远程控制: 1、查看服务器当前路径文件 ls 3、进入、退出服务器文件夹 cd 4、上传文件到服务器 put xxx 本地控制: 1、查看本地(客户端)文件 lls 2、进入客户端文件夹 lcd 3、获取服务器的文件…

音频录制软件哪个好?帮助你找到最合适的一款

音频录制软件是日常工作、学习和创作中不可或缺的一部分。选择一个适合自己需求的录音软件对于确保音频质量和提高工作效率至关重要。可是您知道音频录制软件哪个好吗?本文将深入探讨两种常见的音频录制软件,通过详细的步骤指南,帮助您了解它…

编写Java应用程序,输出满足1+2+3+……+n<8888的最大正整数n。

源代码: public class Main { public static void main(String[] args) { int i 1; int sum 0; for(i 1;;i){ sum i; if (sum >8888) break; } System.out.println(i-1); } } 实验运行截图:

【滑动窗口】LeetCode2953:统计完全子字符串

作者推荐 [二分查找]LeetCode2040:两个有序数组的第 K 小乘积 本题其它解法 【离散差分】LeetCode2953:统计完全子字符串 题目 给你一个字符串 word 和一个整数 k 。 如果 word 的一个子字符串 s 满足以下条件,我们称它是 完全字符串: s 中每个字符…

深入理解:指针变量的解引用 与 加法运算

前言 指针变量的解引用和加法运算是非常高频的考点,也是难点,因为对初学者的不友好,这就导致了各大考试都很喜欢在这里出题,通常会伴随着强制类型转换、二维数组、数组指针等一起考查大家对指针的理解。但是不要怕,也许…

论文解读--PointPillars- Fast Encoders for Object Detection from Point Clouds

PointPillars--点云目标检测的快速编码器 摘要 点云中的物体检测是许多机器人应用(如自动驾驶)的重要方面。在本文中,我们考虑将点云编码为适合下游检测流程的格式的问题。最近的文献提出了两种编码器;固定编码器往往很快,但牺牲了准确性,而…

腾讯视频崩了,年终奖没了。。。

最近互联网的瓜可是不少啊!最开始阿里云崩了,阿里云崩了之后,没几天滴滴也崩了,滴滴崩了之后,结果昨天腾讯视频也崩了......年底了,都要来刷刷存在感吗? 简直让我想起来一首儿歌: 阿…

使用autodl服务器,两个3090显卡上运行, Yi-34B-Chat-int4模型,并使用vllm优化加速,显存占用42G,速度23 words/s

1,演示视频地址 https://www.bilibili.com/video/BV1Hu4y1L7BH/ 使用autodl服务器,两个3090显卡上运行, Yi-34B-Chat-int4模型,用vllm优化,增加 --num-gpu 2,速度23 words/s 2,使用3090显卡 和…

25、矩阵乘法的本质

本来一直在介绍卷积,为什么突然出现一个矩阵乘法呢? 因为如果我们将卷积运算拆开,其中最核心的部分便是一个矩阵乘法。所以,卷积算法可以看做是带滑窗的矩阵乘法。 这里的滑窗,就是卷积运算中所示意的动图那样,所以,我们把滑窗固定,不看卷积核滑动这个动作,那么就是…

龙芯loongarch64服务器编译安装tokenizers

1、简介 Hugging Face 的 Tokenizers 库提供了一种快速和高效的方式来处理(即分词)自然语言文本,用于后续的机器学习模型训练和推理。这个库提供了各种各样的预训练分词器,如 BPE、Byte-Pair Encoding (Byte-Level BPE)、WordPiece 等,这些都是现代 NLP 模型(如 BERT、GP…

VT-MRPA1-151-1X/V0/0控制2FRE16模块式模拟放大器

适用于控制带有电气位置反馈的直动式比例减压阀(DBETR- 1X 类型)或带有电气位置反馈的比例流量控制阀(2FRE... 类型);控制值输入 1 0 V(差动输入); 可分别调节“上/下”斜坡时间的斜…

两种内网穿透的实现方法

目录 前言: 一、IP和端口的作用 二、公网IP不够用 三、内网穿透实现方法 方法一:设置路由器 方法二:使用某些APP,例如花生壳 前言: 本文会介绍为什么需要使用内网穿透以及实现内网穿透的两种方法 一、IP和端口…

mac磁盘管理工具 DiskCatalogMaker中文 for Mac

磁盘管理工具功能介绍 制作光盘 将您的磁盘图标拖放到目录窗口。 通过Roxio Toast Titanium自动添加刻录光盘。更多 对多张光盘使用批量扫描模式。 您也可以使用生成缩略图图像选项。 并请将其快速编目引擎与其他编目人员比较! 下载:DiskCatalogM…

【华为OD题库-064】最小传输时延I-java

题目 某通信网络中有N个网络结点,用1到N进行标识。网络通过一个有向无环图.表示,其中图的边的值表示结点之间的消息传递时延。 现给定相连节点之间的时延列表times[]{u,v, w),其中u表示源结点,v表示目的结点&#xff0…