9A1.升迁2.4.2.201手册
原创实战升迁大约 2 分钟
9A1.升迁2.4.2.201手册
build版从200升级201,更靠近flywave的工程实践,有重大不兼容影响。
- 调整pom.xml结构,原wings-home变为wings-project
- flywave journal管理采用新的trigger形式
- flywave 默认全部确认,无交互情况,需要手动设置askYes
- 检查wings notable changelog
9A1.1.设置maven
parent依赖变化,从wings-home:2.4.2.200-SNAPSHOT
到wings-project:2.4.2.201-SNAPSHOT
<parent>
<groupId>pro.fessional</groupId>
<artifactId>wings-project</artifactId>
<version>2.4.2.201-SNAPSHOT</version>
</parent>
9A1.2.表结构调整
按下列顺序,依次执行操作
- 执行 2021-12-20v01-journal-trg-insert.sql 新增journal结构
- 执行 JournalManager.manageTriggers(table, true) 删除旧trigger
- 执行 JournalManager.checkAndInitDdl(table, cid) 以新配置替换旧配置
- 执行 JournalManager.publishInsert/Update/Delete(table,true, cid) 生成新trigger
如果需要把原跟踪表的数据导入新跟踪表,且希望旧数据与新数据的时序保持同_id递增, 则需要手动设置AUTO_INCREMENT,使其大于旧表数据数总数。并且手动更新操作期间插入的数据_id
ALTER TABLE table$log AUTO_INCREMENT = $count;
UPDATE table$log set _id = $count + _id;
不介意顺序,或已调整好AUTO_INCREMENT启动时,执行以下sql导入数据
SET @tabl = 'win_user_basis';
SET @cols = (
SELECT CONCAT('`', GROUP_CONCAT(COLUMN_NAME SEPARATOR '`, `'), '`')
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = database() AND TABLE_NAME = @tabl
ORDER BY ORDINAL_POSITION
);
SET @restoreSql = CONCAT(
'INSERT INTO ', @tabl, '$log'
' SELECT NULL, _dt, _tp, ', @cols,' FROM ((SELECT *,\'U\' as _tp FROM ',
@tabl, '$upd) UNION (SELECT *,\'D\' as _tp FROM ',
@tabl, '$del)) as old ORDER BY _dt');
SELECT @restoreSql;
PREPARE stmt FROM @restoreSql;
EXECUTE stmt;
9A1.3.编译错误
根据编译提示,设置InteractiveManager的方法。 如果曾经在自动环境下(batch,web)执行flywave管理数据表, 需要自己定义InteractiveManager.askWay实现。默认实现有
- FlywaveInteractiveTty 以控制台为主
- FlywaveInteractiveGui 以swing对话框为主
如启动时报告 HeadlessException,可能是在wings之前使用了AWT的Font,Color等
at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:204)
需要在最接近或先于main的代码中设置 System.setProperty("java.awt.headless", "false");
或者在jvm启动参数上设置 -Djava.awt.headless=false
9A1.4.数据源调整
为分表分库场景分离出faceless-shard工程。从而DataSource默认使用spring形式。
# 替换为spring默认数据源
spring.datasource.url
spring.datasource.username
spring.datasource.password