为解决 CVE 问题,H2 数据库驱动被升级到 2.1.210 版本。由 1.4.196/1.4.200 驱动版本构件的数据库与 2.1.210 版本不兼容。要升级数据库,您需要使用旧的 H2 驱动备份数据库,并用新驱动恢复此备份。
步骤
-
准备数据库驱动包:
- 原驱动包 (h2-1.4.196.jar/h2-1.4.200.jar)。
- 新驱动包 (h2-2.1.210.jar)。
-
使用 Script 工具备份数据库:
// use the h2-1.4.196.jar/h2-1.4.200.jar to backup the current h2 db:talend_administrator to file: tac_backup.zip java -cp .\h2-1.4.200.jar org.h2.tools.Script -url "jdbc:h2:file:D:/Tomcats/tacdb/migrate/talend_administrator;MV_STORE=FALSE;AUTO_SERVER=TRUE;lock_timeout=15000;DEFAULT_LOCK_TIMEOUT=15000;LOCK_MODE=0" -user tisadmin -password tisadmin -script tac_backup.zip -options compression zip
-
使用 RunScript 工具将备份恢复到新的数据库:
// use the h2-2.1.210.jar to restore the backup file: tac_backup.zip to new db: talend_administrator_new java -cp .\h2-2.1.210.jar org.h2.tools.RunScript -url "jdbc:h2:file:D:/Tomcats/tacdb/migrate/talend_administrator_new;AUTO_SERVER=TRUE;lock_timeout=15000;DEFAULT_LOCK_TIMEOUT=15000;LOCK_MODE=0;MODE=LEGACY" -user tisadmin -password tisadmin -script tac_backup.zip -options compression zip
-
将文件 talend_administrator_new.mv.db 更名为 talend_administrator.mv.db。Talend Administration Center 将使用这个与 2.1.210 驱动兼容的新文件。
同时还要用正确的 JDBC URL 更新 <ApplicationPath>/WEB-INF/classes/configuration.properties 文件:
jdbc:h2:{0}/WEB-INF/database/talend_administrator;AUTO_SERVER=TRUE;lock_timeout=15000;DEFAULT_LOCK_TIMEOUT=15000;LOCK_MODE=0;MODE=LEGACY
关于如何升级、备份及恢复 H2 数据库的更多信息,请参见 https://h2database.com/html/tutorial.html#upgrade_backup_restore。