[PR #107] [MERGED] fix: resolve migration 0005 duplicate constraint failure (#97) #132

Closed
opened 2026-02-27 15:55:15 +03:00 by kerem · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/RayLabsHQ/gitea-mirror/pull/107
Author: @arunavo4
Created: 10/1/2025
Status: Merged
Merged: 10/2/2025
Merged by: @arunavo4

Base: mainHead: fix/issue-97-migration-duplicates


📝 Commits (2)

  • 2ea917f fix: resolve migration 0005 duplicate constraint failure (#97)
  • bf99a95 ci: add more paths to trigger Docker builds

📊 Changes

3 files changed (+24 additions, -154 deletions)

View changed files

📝 .github/workflows/docker-build.yml (+8 -0)
📝 docker-entrypoint.sh (+5 -153)
📝 drizzle/0005_polite_preak.sql (+11 -1)

📄 Description

Problem:

  • Users upgrading to v3.7.2 encountered database migration failures
  • Migration 0005 tried to add unique index without handling existing duplicates
  • Hybrid initialization (manual SQL + Drizzle) caused schema inconsistencies
  • Error: "UNIQUE constraint failed: repositories.user_id, repositories.full_name"

Solution:

  1. Fixed Migration 0005:

    • Added deduplication step before creating unique index
    • Removes duplicate (user_id, full_name) entries, keeping most recent
    • Safely creates unique constraint after cleanup
  2. Removed Hybrid Database Initialization:

    • Eliminated 154 lines of manual SQL from docker-entrypoint.sh
    • Now uses Drizzle exclusively for schema management
    • Single source of truth prevents schema drift
    • Migrations run automatically via src/lib/db/index.ts

Testing:

  • Fresh database initialization works
  • Duplicate deduplication verified
  • Unique constraint properly enforced
  • All 6 migrations apply cleanly

Changes:

  • docker-entrypoint.sh: Removed manual table creation SQL
  • drizzle/0005_polite_preak.sql: Added deduplication before index creation

Fixes #97


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/RayLabsHQ/gitea-mirror/pull/107 **Author:** [@arunavo4](https://github.com/arunavo4) **Created:** 10/1/2025 **Status:** ✅ Merged **Merged:** 10/2/2025 **Merged by:** [@arunavo4](https://github.com/arunavo4) **Base:** `main` ← **Head:** `fix/issue-97-migration-duplicates` --- ### 📝 Commits (2) - [`2ea917f`](https://github.com/RayLabsHQ/gitea-mirror/commit/2ea917fdaa25c4d463954b27a83c972ae27b0b26) fix: resolve migration 0005 duplicate constraint failure (#97) - [`bf99a95`](https://github.com/RayLabsHQ/gitea-mirror/commit/bf99a95dc6b90babff35a64e9a48e5e4e5a091b4) ci: add more paths to trigger Docker builds ### 📊 Changes **3 files changed** (+24 additions, -154 deletions) <details> <summary>View changed files</summary> 📝 `.github/workflows/docker-build.yml` (+8 -0) 📝 `docker-entrypoint.sh` (+5 -153) 📝 `drizzle/0005_polite_preak.sql` (+11 -1) </details> ### 📄 Description **Problem:** - Users upgrading to v3.7.2 encountered database migration failures - Migration 0005 tried to add unique index without handling existing duplicates - Hybrid initialization (manual SQL + Drizzle) caused schema inconsistencies - Error: "UNIQUE constraint failed: repositories.user_id, repositories.full_name" **Solution:** 1. **Fixed Migration 0005:** - Added deduplication step before creating unique index - Removes duplicate (user_id, full_name) entries, keeping most recent - Safely creates unique constraint after cleanup 2. **Removed Hybrid Database Initialization:** - Eliminated 154 lines of manual SQL from docker-entrypoint.sh - Now uses Drizzle exclusively for schema management - Single source of truth prevents schema drift - Migrations run automatically via src/lib/db/index.ts **Testing:** - ✅ Fresh database initialization works - ✅ Duplicate deduplication verified - ✅ Unique constraint properly enforced - ✅ All 6 migrations apply cleanly **Changes:** - docker-entrypoint.sh: Removed manual table creation SQL - drizzle/0005_polite_preak.sql: Added deduplication before index creation Fixes #97 --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
kerem 2026-02-27 15:55:15 +03:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/gitea-mirror#132
No description provided.