transactions.reference at the PostgreSQL layer.
If you are upgrading from v0.13.1 or earlier and your ledger already contains transaction data, audit for duplicate references before you upgrade.
Breaking changes summary
- From: Non-unique index on
reference; uniqueness enforced only in application logic (with gaps on some queued and bulk paths). - To: Unique index
idx_transactions_reference_uniqueonblnk.transactions(reference). - Impact: The database migration fails at startup if duplicate references already exist. After upgrade, duplicate references are rejected at the database layer, not only by application checks.
What changed
- Unique reference constraint: Every transaction
referencemust be unique in the database. If two rows share the same reference, the upgrade fails until you fix them. - Queue recovery index: The same release also improves recovery of transactions stuck in
QUEUED. This does not change how you post transactions. See Queue recovery.
Migration steps
Audit duplicate references
Before upgrading, check whether your database already contains duplicate
reference values:Example output
If this query returns no rows, you can proceed to upgrade.
Resolve duplicates before upgrade
This query finds duplicate references, keeps the oldest row in each group unchanged, and renames every later row by appending The earliest
_dup_ plus its transaction_id.Example output
ref_123 row stays as-is. The two later rows get unique references so the upgrade can proceed.Re-run the audit query from step 1 until it returns no rows.Upgrade Blnk to v0.13.2 or later
Deploy Blnk v0.13.2 or a later release. Migrations run automatically on startup and apply
1770611011.sql.The unique index ships in v0.13.2. Later releases (including all v0.14.x patches) inherit the same migration unchanged — none of them introduce this constraint separately.
Technical details
- Migration file:
1770611011.sql - Index name:
idx_transactions_reference_unique - Legacy index: Before 0.13.2,
referencehad a non-unique index (idx_transactions_referencefrom the initial schema).
This migration guide covers the breaking change in Blnk v0.13.2. For other features in this release, such as Search via Database, refer to the release notes.