fix(bugcollect): 修复 V6 no-op 导致 build_id 列缺失引发的 502
V6 迁移原为空操作(SELECT 1),导致 log_issue_events 和 log_sourcemaps 表缺少 build_id 列,服务启动时 Hibernate schema 校验失败并持续重启。 - 重写 V6 为实际 DDL(ALTER TABLE ... ADD COLUMN build_id) - 新增 V7 幂等修复迁移,使用条件预处理语句,对已有列的部署安全跳过 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
这个提交包含在:
父节点
ddaf2829cc
当前提交
e294d42dff
@ -1,4 +1,20 @@
|
|||||||
-- V6: build_id support for multi-build-per-version sourcemap tracking
|
-- V6: build_id support for multi-build-per-version sourcemap tracking
|
||||||
-- All DDL was applied manually during the initial migration incident.
|
--
|
||||||
-- This script is intentionally a no-op to let Flyway record V6 as done.
|
-- Adds build_id to log_issue_events and log_sourcemaps so each unique
|
||||||
SELECT 1;
|
-- (appKey, platform, appVersion, buildId, bundleName) combination can
|
||||||
|
-- store its own sourcemap file without overwriting sibling builds.
|
||||||
|
--
|
||||||
|
-- Existing deployments where this column was already added manually:
|
||||||
|
-- Flyway will have recorded V6 as done via the old no-op; those databases
|
||||||
|
-- have the column already. For any deployment where V6 ran as a no-op
|
||||||
|
-- and the column is still missing, run the repair migration V7.
|
||||||
|
|
||||||
|
ALTER TABLE log_issue_events
|
||||||
|
ADD COLUMN build_id VARCHAR(32) NULL
|
||||||
|
COMMENT 'Build identifier for sourcemap tracking'
|
||||||
|
AFTER app_version;
|
||||||
|
|
||||||
|
ALTER TABLE log_sourcemaps
|
||||||
|
ADD COLUMN build_id VARCHAR(32) NULL
|
||||||
|
COMMENT 'Build identifier for multi-build-per-version sourcemap tracking'
|
||||||
|
AFTER app_version;
|
||||||
|
|||||||
@ -0,0 +1,30 @@
|
|||||||
|
-- V7: repair for deployments where V6 ran as a no-op
|
||||||
|
--
|
||||||
|
-- On some deployments V6 was recorded as done but contained only SELECT 1,
|
||||||
|
-- leaving build_id missing from log_issue_events and log_sourcemaps.
|
||||||
|
-- This migration adds the column idempotently using a prepared statement so
|
||||||
|
-- it is safe whether the column already exists or not.
|
||||||
|
|
||||||
|
SET @_add_lie = IF(
|
||||||
|
NOT EXISTS (
|
||||||
|
SELECT 1 FROM information_schema.columns
|
||||||
|
WHERE table_schema = DATABASE()
|
||||||
|
AND table_name = 'log_issue_events'
|
||||||
|
AND column_name = 'build_id'
|
||||||
|
),
|
||||||
|
'ALTER TABLE log_issue_events ADD COLUMN build_id VARCHAR(32) NULL COMMENT ''Build identifier for sourcemap tracking'' AFTER app_version',
|
||||||
|
'SELECT 1 /* log_issue_events.build_id already exists */'
|
||||||
|
);
|
||||||
|
PREPARE _s FROM @_add_lie; EXECUTE _s; DEALLOCATE PREPARE _s;
|
||||||
|
|
||||||
|
SET @_add_lsm = IF(
|
||||||
|
NOT EXISTS (
|
||||||
|
SELECT 1 FROM information_schema.columns
|
||||||
|
WHERE table_schema = DATABASE()
|
||||||
|
AND table_name = 'log_sourcemaps'
|
||||||
|
AND column_name = 'build_id'
|
||||||
|
),
|
||||||
|
'ALTER TABLE log_sourcemaps ADD COLUMN build_id VARCHAR(32) NULL COMMENT ''Build identifier for multi-build-per-version sourcemap tracking'' AFTER app_version',
|
||||||
|
'SELECT 1 /* log_sourcemaps.build_id already exists */'
|
||||||
|
);
|
||||||
|
PREPARE _s FROM @_add_lsm; EXECUTE _s; DEALLOCATE PREPARE _s;
|
||||||
正在加载...
在新工单中引用
屏蔽一个用户