博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Jhipster】升级/修改 数据库结构
阅读量:5091 次
发布时间:2019-06-13

本文共 2137 字,大约阅读时间需要 7 分钟。

前提


1、jhipster环境,jdk1.8,yeoman,node.js安装环境参考,环境问题参考,如果出现注册中心空白页,请参考

 

2、首先需要启动jhipster基础服务,jhipster-registry-master,uaa,gateway,新建一个微服务应用,参考

3、创建实体,cd到微服务目录,自动创建数据库,参考,这里我们创建一个clazz实体,本文主要修改这个实体,有一个classNo int型,className Stirng型

4、还需要知道how to 查询dev环境的数据库,比较简单,简单讲下:启动新建的微服务应用,查看端口号(这里以8081举例),访问 localhost:8081/h2-console

上图中就是我们熟悉的查询界面了,接下来我们看看修改数据库

 

正文


 

鉴于jhipster升级/修改数据库结构有 三种方式,这里分开来介绍下

 

使用entity sub-generator 更新数据库


 

1、cd到需要修改的微服务应用项目文件夹

2、运行:命令 yo jhipster:entity 需要修改的实体名(第一次是创建,如果已经存在则提示修改)

3、根据需要选择添加字段到这个实体,还是删除字段,这里没有修改,可以使用remove之后再添加,这里选添加做测试,添加一个名为class_desc,字段类型为String

 

不继续输入n,当然了如果想继续添加也无所谓,后边添加约束也可以不添加

此时这个实体就修改完毕了,同时自动创建 changelog 到 src/main/resources/config/liquibase/changelog目录中,并且自动添加到src/main/resources/config/liquibase/master.xml文件中,这里就是liquibase等待这个项目启动去改变数据库的事了。

这一切都是自动发生的,如果仅想简单的修改表结构,可以这样,也不用继续看下文了,启动项目即可

 

手动编辑 changelog 更新数据库


 

当然这种一看就是最麻烦的那种,其实不难

1、修改jpa实体,比如我现在想为clazz实体和数据库添加一个字段class_test,类型为String

2、编写changelog文件

创建 changelog文件到 src/main/resources/config/liquibase/changelog 命名格式为yyyMMddHHmmss_描述.xml(可以少写一些),例如这里就用201804131020_modify_entity_Clazz.xml,参考

  

 

3、将上边修改的文件路径添加 changelog 到 src/main/resources/config/liquibase/master.xml

4、重新启动微服务应用,如果没有error,请进入h2-console查看,

下边是正常情况下的数据库情况

 

 

使用Maven liquibase:diff更新数据库


 

最后这种没有尝试成功,不知道哪步弄错了,大家可以参考

开发流程如下

  • 修改jpa实体(增删字段,修改关联关系等)

  • 编译程序

  • 运行 mvnw liquibase:diff

  • 生成变更日志在 src/main/resources/config/liquibase/changelog 目录

  • 查看变更日志,删除多余更新内容,保留必要更新,重命名文件为有意义文件名,比如20161012021042_modify_name_length.xml,并添加到 src/main/resources/config/liquibase/master.xml 重启生效

 

 

问题解决


 

1、启动项目输出如下:

解决办法:

  • 进入刚才修改的changelog文件中,请修改刚才写的id为当前时间值yyyyMMddHHmmss,分钟不能差,秒也可以不写,重启应用试验
  • 注意如果修改之后还是这样,请查看master.xml中是否include其他时间已经过期的文件,注释掉即可

2、出现如下图问题

这个问题是说之前我们已经创建了这个字段,进入h2-console查看,的确存在

 

3、对于每次启动都会报错这个错误,还有种简单粗暴的方法是删除target ,祝成功:)

 

声明:本博文为本人实际操作经验写成,转载请注明出处,或者别让我看到

转载于:https://www.cnblogs.com/hellxz/p/8819503.html

你可能感兴趣的文章
JS --实用小方法收集
查看>>
python-数据类型
查看>>
ASP.NET EF实体主外键关系
查看>>
【python之路15】深浅拷贝及函数
查看>>
Python操作RabbitMQ
查看>>
HDUOJ----4509湫湫系列故事——减肥记II
查看>>
linux下mysql函数的详细案列
查看>>
【2019.7.24】数颜色 / 聪明的可可 / 奖章分发
查看>>
深度学习基础网络 ResNet
查看>>
js(事件) d3
查看>>
算法学习-带分数
查看>>
Pomodairo,番茄工作法-应用篇
查看>>
XML 之 与Json或String的相互转换
查看>>
Android 之 权限 uses-permission 设置
查看>>
关于面试技巧
查看>>
JavaScript学习笔记(二)
查看>>
salesforce零基础学习(七十七)队列的实现以及应用
查看>>
H5视频播放自动全屏,暂停退出全屏等功能
查看>>
【代码笔记】iOS-对iphone手机进行判断的一些函数
查看>>
easyui源码翻译1.32--ComboTree(树形下拉框)
查看>>