这个报错原因是表中已经有数据了!
我们经常会遇到这种情况:
项目已经部署给用户用了,但是某张表需要改动字段,这时候就需要打补丁了。
1、打补丁增加字段时,如果在开发环境下进行清库开发测试时,是完全没有问题的,因为开发环境下清库测试时,数据库是空数据的,所以不会报标题的那个错误。
2、但是,如果打补丁增加的字段是不可为空的,如果没有设置默认值,那么在部署的时候就会报那个错误,因为以前部署的版本已经有数据了,部署新版本的时候是不能清库的,
所以增加的字段是不可为空的,那么就需要打补丁的时候设置字段的默认值,如果不设置默认值并且数据库有数据,那么就会报错!
这是我在实际开发中遇到过的问题。
xml打补丁设置默认值defaultValue
<?xml version="1.0" encoding="UTF-8"?> <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd"> <changeSet id="xxxx.2020/03/20" author="Xxxx"> <addColumn tableName="groot_fytjxxbqj"> <column name="ltshqk" type="varchar2(20)" defaultValue="UNREVIEW"> <constraints nullable="false"/> </column> <column name="sbshqk" type="varchar2(20)" defaultValue="UNREVIEW"> <constraints nullable="false"/> </column> <column name="cwshqk" type="varchar2(20)" defaultValue="UNREVIEW"> <constraints nullable="false"/> </column> </addColumn> </changeSet> </databaseChangeLog>
分类:
数据库
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!