diff --git a/xuqm-bugcollect-service/src/main/resources/db/migration/V8__sourcemap_uk_add_build_id.sql b/xuqm-bugcollect-service/src/main/resources/db/migration/V8__sourcemap_uk_add_build_id.sql new file mode 100644 index 0000000..3d4635b --- /dev/null +++ b/xuqm-bugcollect-service/src/main/resources/db/migration/V8__sourcemap_uk_add_build_id.sql @@ -0,0 +1,14 @@ +-- V8: Include build_id in log_sourcemaps unique constraint. +-- +-- Problem: uk_map was (app_key, platform, app_version, bundle_name). +-- When the Gradle plugin uploads mapping files with a per-build buildId, +-- each new build of the same version generates a different buildId and tries +-- to INSERT a new row, which violates the old constraint → HTTP 500. +-- +-- Fix: rebuild uk_map to include build_id. +-- MySQL treats NULLs as distinct in unique indexes, so legacy records +-- (build_id IS NULL) coexist without conflict. Application logic already +-- prevents duplicate NULL-buildId rows via findByAppKeyAndPlatformAndAppVersionAndBuildIdIsNullAndBundleName. + +ALTER TABLE log_sourcemaps DROP INDEX uk_map; +ALTER TABLE log_sourcemaps ADD UNIQUE KEY uk_map (app_key, platform, app_version, build_id, bundle_name);