diff --git a/db/增量SQL/版本升级说明.txt b/db/增量SQL/版本升级说明.txt deleted file mode 100644 index 7a9543fe..00000000 --- a/db/增量SQL/版本升级说明.txt +++ /dev/null @@ -1,11 +0,0 @@ -版本升级方法? - - JeecgBoot属于平台级产品,每次升级改动内容较多,目前做不到平滑升级。 - - 升级方案建议: - 1.代码升级 => 本地版本通过svn或者git做好主干,在分支上做业务开发,jeecg每次版本发布,可以手工覆盖主干的代码,对比合并代码; - 2.数据库升级 => 针对数据库我们每次发布会提供增量升级SQL,可以通过执行增量SQL实现数据库的升级。 - 3.兼容问题 => 每次版本发布会针对不兼容地方标注说明,需要手工修改不兼容的代码。 - - 注意: 升级sql目前只提供mysql版本,执行完脚步后,新菜单需要手工进行角色授权,刷新首页才会出现。 - 【20230820 放开了系统管理等模块权限注解,如果没权限请通过角色授权授权对应的按钮权限】 \ No newline at end of file diff --git a/db/版本升级说明.md b/db/版本升级说明.md new file mode 100644 index 00000000..516bf2b6 --- /dev/null +++ b/db/版本升级说明.md @@ -0,0 +1,15 @@ +# 版本升级方法 + +> JeecgBoot属于平台级产品,每次升级改动较大,目前做不到平滑升级。 + +### 增量升级方案 +#### 1.代码合并 + 本地通过svn或git做好主干,在分支上做业务开发,jeecg每次版本发布,可以手工覆盖主干的代码,对比合并代码; + +#### 2.数据库升级 +- 从3.6.2+版本增加flyway自动升级数据库机制,支持 mysql5.7、mysql8; +- 其他库请手工执行SQL, 目录: `jeecg-module-system\jeecg-system-start\flyway\sql\mysql` +> 注意: 升级sql只提供mysql版本;如果有权限升级, 还需要手工角色授权,退出重新登录才好使。 + +#### 3.兼容问题 + 每次发版,会针对不兼容地方重点说明。 \ No newline at end of file diff --git a/jeecg-module-system/jeecg-system-start/pom.xml b/jeecg-module-system/jeecg-system-start/pom.xml index 0ee57e65..fc27d427 100644 --- a/jeecg-module-system/jeecg-system-start/pom.xml +++ b/jeecg-module-system/jeecg-system-start/pom.xml @@ -42,6 +42,13 @@ DmDialect-for-hibernate5.0 ${dm8.version} + + + + org.flywaydb + flyway-core + 7.15.0 + diff --git a/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml b/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml index 0258ce93..afa6799a 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml +++ b/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml @@ -20,6 +20,29 @@ management: include: metrics,httptrace spring: + # flyway配置 + flyway: + # 是否启用flyway + enabled: true + # 编码格式,默认UTF-8 + encoding: UTF-8 + # 迁移sql脚本文件存放路径,官方默认db/migration + locations: classpath:flyway/sql/mysql + # 迁移sql脚本文件名称的前缀,默认V + sql-migration-prefix: V + # 迁移sql脚本文件名称的分隔符,默认2个下划线__ + sql-migration-separator: __ + # 避免带${}sql执行失败 + placeholder-prefix: '#(' + placeholder-suffix: ) + # 迁移sql脚本文件名称的后缀 + sql-migration-suffixes: .sql + # 迁移时是否进行校验,默认true + validate-on-migrate: true + # 当迁移发现数据库非空且存在没有元数据的表时,自动执行基准迁移,新建schema_version表 + baseline-on-migrate: true + # 是否关闭要清除已有库下的表功能,生产环境必须为true,否则会删库,非常重要!!! + clean-disabled: true servlet: multipart: max-file-size: 10MB @@ -133,7 +156,7 @@ spring: slow-sql-millis: 5000 datasource: master: - url: jdbc:mysql://127.0.0.1:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai + url: jdbc:mysql://127.0.0.1:3306/jeecgos?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver @@ -244,6 +267,7 @@ cas: #Mybatis输出sql日志 logging: level: + org.flywaydb: debug org.jeecg.modules.system.mapper: info #swagger knife4j: diff --git a/jeecg-module-system/jeecg-system-start/src/main/resources/application-prod.yml b/jeecg-module-system/jeecg-system-start/src/main/resources/application-prod.yml index 58790066..4f7595f6 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/resources/application-prod.yml +++ b/jeecg-module-system/jeecg-system-start/src/main/resources/application-prod.yml @@ -20,6 +20,29 @@ management: include: metrics,httptrace spring: + # flyway配置 + flyway: + # 是否启用flyway + enabled: false + # 编码格式,默认UTF-8 + encoding: UTF-8 + # 迁移sql脚本文件存放路径,官方默认db/migration + locations: classpath:flyway/sql/mysql + # 迁移sql脚本文件名称的前缀,默认V + sql-migration-prefix: V + # 迁移sql脚本文件名称的分隔符,默认2个下划线__ + sql-migration-separator: __ + # 避免带${}sql执行失败 + placeholder-prefix: '#(' + placeholder-suffix: ) + # 迁移sql脚本文件名称的后缀 + sql-migration-suffixes: .sql + # 迁移时是否进行校验,默认true + validate-on-migrate: true + # 当迁移发现数据库非空且存在没有元数据的表时,自动执行基准迁移,新建schema_version表 + baseline-on-migrate: true + # 是否关闭要清除已有库下的表功能,生产环境必须为true,否则会删库,非常重要!!! + clean-disabled: true servlet: multipart: max-file-size: 10MB diff --git a/jeecg-module-system/jeecg-system-start/src/main/resources/application-test.yml b/jeecg-module-system/jeecg-system-start/src/main/resources/application-test.yml index efddc8f5..530144bc 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/resources/application-test.yml +++ b/jeecg-module-system/jeecg-system-start/src/main/resources/application-test.yml @@ -20,6 +20,29 @@ management: include: metrics,httptrace spring: + # flyway配置 + flyway: + # 是否启用flyway + enabled: true + # 编码格式,默认UTF-8 + encoding: UTF-8 + # 迁移sql脚本文件存放路径,官方默认db/migration + locations: classpath:flyway/sql/mysql + # 迁移sql脚本文件名称的前缀,默认V + sql-migration-prefix: V + # 迁移sql脚本文件名称的分隔符,默认2个下划线__ + sql-migration-separator: __ + # 避免带${}sql执行失败 + placeholder-prefix: '#(' + placeholder-suffix: ) + # 迁移sql脚本文件名称的后缀 + sql-migration-suffixes: .sql + # 迁移时是否进行校验,默认true + validate-on-migrate: true + # 当迁移发现数据库非空且存在没有元数据的表时,自动执行基准迁移,新建schema_version表 + baseline-on-migrate: true + # 是否关闭要清除已有库下的表功能,生产环境必须为true,否则会删库,非常重要!!! + clean-disabled: true servlet: multipart: max-file-size: 10MB @@ -242,6 +265,7 @@ jeecg: #Mybatis输出sql日志 logging: level: + org.flywaydb: debug org.jeecg.modules.system.mapper: info #cas单点登录 cas: diff --git a/db/增量SQL/3.6.1升级到3.6.2升级脚本.sql b/jeecg-module-system/jeecg-system-start/src/main/resources/flyway/sql/mysql/V3.6.2__all_upgrade.sql similarity index 96% rename from db/增量SQL/3.6.1升级到3.6.2升级脚本.sql rename to jeecg-module-system/jeecg-system-start/src/main/resources/flyway/sql/mysql/V3.6.2__all_upgrade.sql index 93d9cc84..7b775e09 100644 --- a/db/增量SQL/3.6.1升级到3.6.2升级脚本.sql +++ b/jeecg-module-system/jeecg-system-start/src/main/resources/flyway/sql/mysql/V3.6.2__all_upgrade.sql @@ -1,12 +1,12 @@ ALTER TABLE onl_drag_page -MODIFY COLUMN id varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键' FIRST, -MODIFY COLUMN low_app_id varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '应用ID' AFTER update_time; + MODIFY COLUMN id varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键' FIRST, + MODIFY COLUMN low_app_id varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '应用ID' AFTER update_time; ALTER TABLE onl_drag_page_comp -MODIFY COLUMN page_Id varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '界面ID' AFTER parent_id; + MODIFY COLUMN page_Id varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '界面ID' AFTER parent_id; ALTER TABLE onl_drag_page -ADD COLUMN visits_num int(11) NULL DEFAULT NULL COMMENT '访问次数' AFTER update_count; + ADD COLUMN visits_num int(11) NULL DEFAULT NULL COMMENT '访问次数' AFTER update_count; UPDATE onl_drag_comp SET parent_id = '1537764868216684545', comp_name = '金字塔漏斗图', comp_type = 'JPyramidFunnel', icon = 'icon-park-outline:children-pyramid', order_num = 100, type_id = NULL, comp_config = '{\n \"dataType\": 1,\n \"url\": \"http://api.jeecg.com/mock/26/funnel\",\n \"timeOut\": 0,\n \"turnConfig\": {\n \"url\": \"\"\n },\n \"linkageConfig\": [],\n \"dataMapping\": [\n {\n \"filed\": \"维度\",\n \"mapping\": \"\"\n },\n {\n \"filed\": \"数值\",\n \"mapping\": \"\"\n }\n ],\n \"chartData\": [\n {\n \"value\": 1000,\n \"name\": \"直接访问\"\n },\n {\n \"value\": 200,\n \"name\": \"邮件营销\"\n },\n {\n \"value\": 400,\n \"name\": \"联盟广告\"\n },\n {\n \"value\": 600,\n \"name\": \"网页查询\"\n },\n {\n \"value\": 800,\n \"name\": \"广告点击\"\n }\n ],\n \"option\": {\n \"title\": {\n \"text\": \"基础漏斗图\",\n \"show\": true\n },\n \"grid\": {\n \"bottom\": 115\n },\n \"card\": {\n \"title\": \"\",\n \"extra\": \"\",\n \"rightHref\": \"\",\n \"size\": \"default\"\n },\n \"tooltip\": {\n \"trigger\": \"item\",\n \"formatter\": \"{a}
{b} : {c}\"\n },\n \"legend\": {\n \"orient\": \"horizontal\"\n },\n \"series\": [\n {\n \"name\": \"Funnel\",\n \"type\": \"funnel\",\n \"left\": \"10%\",\n \"width\": \"80%\",\n \"sort\": \"ascending\",\n \"gap\": 2,\n \"label\": {\n \"show\": true,\n \"position\": \"inside\"\n },\n \"labelLine\": {\n \"length\": 10,\n \"lineStyle\": {\n \"width\": 1,\n \"type\": \"solid\"\n }\n },\n \"itemStyle\": {\n \"borderColor\": \"#fff\",\n \"borderWidth\": 1\n },\n \"emphasis\": {\n \"label\": {\n \"fontSize\": 20\n }\n }\n }\n ]\n }\n}', status = '1', create_by = NULL, create_time = '2022-06-16 14:17:31', update_by = NULL, update_time = '2022-06-16 14:59:44' WHERE id = '1537318433201340417'; UPDATE onl_drag_comp SET parent_id = '1537764868216684545', comp_name = '普通漏斗图', comp_type = 'JFunnel', icon = 'ant-design:funnel-plot-filled', order_num = 8, type_id = NULL, comp_config = '{\n \"dataType\": 1,\n \"url\": \"http://api.jeecg.com/mock/26/funnel\",\n \"timeOut\": 0,\n \"turnConfig\": {\n \"url\": \"\"\n },\n \"linkageConfig\": [],\n \"dataMapping\": [\n {\n \"filed\": \"维度\",\n \"mapping\": \"\"\n },\n {\n \"filed\": \"数值\",\n \"mapping\": \"\"\n }\n ],\n \"chartData\": [\n {\n \"value\": 335,\n \"name\": \"直接访问\"\n },\n {\n \"value\": 310,\n \"name\": \"邮件营销\"\n },\n {\n \"value\": 234,\n \"name\": \"联盟广告\"\n }\n ],\n \"option\": {\n \"title\": {\n \"text\": \"基础漏斗图\",\n \"show\": true\n },\n \"grid\": {\n \"bottom\": 115\n },\n \"card\": {\n \"title\": \"\",\n \"extra\": \"\",\n \"rightHref\": \"\",\n \"size\": \"default\"\n },\n \"tooltip\": {\n \"trigger\": \"item\",\n \"formatter\": \"{a}
{b} : {c}\"\n },\n \"legend\": {\n \"orient\": \"horizontal\"\n },\n \"series\": [\n {\n \"name\": \"Funnel\",\n \"type\": \"funnel\",\n \"left\": \"10%\",\n \"width\": \"80%\",\n \"sort\": \"descending\",\n \"gap\": 2,\n \"label\": {\n \"show\": true,\n \"position\": \"inside\"\n },\n \"labelLine\": {\n \"length\": 10,\n \"lineStyle\": {\n \"width\": 1,\n \"type\": \"solid\"\n }\n },\n \"itemStyle\": {\n \"borderColor\": \"#fff\",\n \"borderWidth\": 1\n },\n \"emphasis\": {\n \"label\": {\n \"fontSize\": 20\n }\n }\n }\n ]\n }\n}', status = '1', create_by = NULL, create_time = '2022-01-06 14:38:04', update_by = 'admin', update_time = '2022-06-17 19:51:26' WHERE id = '200208';