Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Use a migration tool’s durable history to make repeated deployment commands apply only pending, versioned changes. Separately, design any script that may execute again—such as a repeatable migration or a retry after partial failure—to tolerate the database’s actual state. Keep released versioned migrations immutable, and inspect both the database and migration history before retrying a failed change.

What does “safe to rerun” mean?

It can mean two different things, and they need different safeguards:

  • Rerunning the migration command: the runner checks its history and skips versioned migrations already recorded as successful, applying only pending work.
  • Rerunning a migration script: the script itself executes again. This may be expected for a repeatable migration or may happen during recovery from a partial failure. Its operations must be valid for the database’s current state.

For the question “How do you add a migration script that should only run once?”, use a uniquely versioned migration managed by a runner. For definitions intended to be reapplied, use a repeatable migration and make its operations safe to execute again.

Choose versioned or repeatable migrations

Approach Use it for Rerun behavior and safety
Versioned migration Schema changes and one-off data corrections Flyway applies versioned migrations in order once, recording successful work in its schema history table. The table also records checksums and success status, so the runner can identify pending work and detect edits.
Repeatable migration Definitions such as views and procedures that need updating when their contents change It may be applied again when its checksum changes, so the script must be safe to apply multiple times. Flyway’s documentation states: “It is your responsibility to ensure the same repeatable migration can be applied multiple times.”

These behaviors are documented in Flyway’s migrations guide. Check your installed tool version and configuration, since runner behavior can vary by tool and setup.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
#1 Best Overall
Elebase USB to USB C Adapter for iPhone 18 Pro Max,USBC Car Charger Adapter
  • Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
  • Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
  • Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
  • Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
  • 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.

Design one-time migrations so history stays trustworthy

Give each change a unique version

Put work that should happen once in a uniquely versioned migration and let the runner track it. Avoid manually marking a migration complete unless you have verified the database state and understand how that bookkeeping change will affect later deployments.

Keep released migrations immutable

A checksum can reveal that a versioned migration differs from the file previously applied; it is not permission to rewrite the past. Once a migration has been used in an environment, treat it as immutable. Make a new versioned migration to correct the schema or data instead of changing the old file and leaving environments with different histories.

Make the change focused and inspectable

Keep each migration focused, with clear preconditions and expected postconditions. For repeatable definitions, database-supported replacement syntax such as CREATE OR REPLACE may suit the object and engine. For data changes, choose conditions, uniqueness constraints, or an upsert pattern that matches the intended result and the database’s semantics.

Rank #2
Anker USB-C Hub, 5-in-1 USB Hub for Laptops, 4K HDMI Multiport Adapter
  • 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
  • 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
  • Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
  • 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
  • What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.

An IF NOT EXISTS guard is not proof that the database is correct: it may hide an object that exists with the wrong definition. Verify the resulting schema or data. If it has drifted, create a versioned correction rather than relying on a guard to make the migration harmless.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Account for transactions and partial failure

A failed migration does not guarantee that nothing changed. Rollback can restore atomicity only when the migration tool, database, and statements involved support the necessary transactional behavior. Some DDL cannot run transactionally, and some databases implicitly commit around DDL.

Flyway ordinarily wraps a migration in a transaction where supported. Its documentation explains that a failed non-transactional migration can leave partial effects requiring manual cleanup and a repair of the schema-history entry. Liquibase also warns that a multi-statement changeset with runInTransaction=false can leave its changelog state invalid if it fails midway. See the Flyway project migration guidance and Liquibase’s runInTransaction reference (last updated January 21, 2026).

Rank #3
Sale
Anker USB C Hub, 7in1 Multi-Port USB Adapter, 4K@60Hz USBC to HDMI Splitter
  • Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
  • Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
  • Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
  • Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
  • What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.

Prepare non-transactional work

When an operation cannot run in a transaction, isolate that step if the tool and database allow it. Before deploying, document how to inspect whether it partially completed and how to clean up or reconcile the state. Test the procedure rather than assuming a failed command left the database untouched.

Handle PostgreSQL concurrent index creation carefully

In PostgreSQL, CREATE INDEX CONCURRENTLY has transaction and locking requirements that can affect migration execution. Flyway’s PostgreSQL reference describes a potential issue with its default transactional lock and documents an alternative session-level lock setting. Verify the current Flyway version, PostgreSQL version, and deployment configuration before using that setting: Flyway’s PostgreSQL database reference.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Recover from a failed migration by inspecting state first

  1. Stop automatic retries. Do not assume the failed attempt had no effect.
  2. Inspect the database. Check the affected schema and data for completed, partial, or unexpected changes.
  3. Inspect migration history. Compare the runner’s recorded status with the actual database state.
  4. Clean up or reconcile partial effects. Decide what must be removed or completed before another attempt can succeed.
  5. Repair bookkeeping only when it matches reality. Use the migration tool’s documented repair mechanism after the database state has been verified; do not use it to conceal unresolved changes.
  6. Retry only when the script is safe for the resulting state. If the change needs correction, create a suitable new versioned migration rather than altering a released migration.

Do not treat an undo migration as a universal recovery mechanism. A multi-statement change may fail after some statements succeed, leaving a state an undo for the entire migration cannot reliably reverse. Flyway’s guidance on rolling out updates discusses failure handling, compatibility, and recovery.

Rank #4
Sale
UGREEN USB to USB C Adapter Combo 4-Pack, 10Gbps USB C Converter Space Gray
  • Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
  • Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
  • Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
  • Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
  • Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Prevent concurrent migration runs and unsafe rollouts

Run one migration process per database change window, or rely on the migration tool’s supported locking. Flyway describes a database-level lock on its schema history table that allows only one concurrent migration invocation to proceed. This serializes migration runners; it does not eliminate every concurrency concern inside application transactions.

For example, PostgreSQL documents that under repeatable read, a transaction’s snapshot may predate a lock acquired after an earlier query. When application code uses explicit locks to protect consistency, acquire them in an order that accounts for this behavior. See PostgreSQL’s application-level consistency checks guidance.

During a staged deployment, keep the old and new application versions compatible with the database while the rollout is in progress. Prefer backward-compatible schema changes where possible, and test backup restoration rather than assuming an undo script can recover every failure. Flyway covers these rollout practices in its update rollout guidance.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Best Value
Anker USB C Hub, 5-in-1 USBC to HDMI Splitter with 4K Display
  • 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
  • Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
  • Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
  • HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
  • What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.

Test the clean path, retry path, and deployment races

Exercise the migration against the actual database engine and the migration-tool configuration intended for deployment. A useful test set includes:

  • A fresh database that needs all migrations.
  • A database already at the target version, where the command should not repeat successful versioned work.
  • A controlled failure after an early statement, followed by inspection of the database and history.
  • A retry after that failure, using the documented cleanup or recovery procedure.
  • Two deployment processes attempting to migrate concurrently.
  • Application behavior during a staged rollout with both old and new application versions.
  • Restoration from backup, so recovery does not depend solely on undo migrations.

Transaction boundaries, statement support, runner locking, and database-specific DDL behavior determine what these tests need to verify; they are not interchangeable across engines.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.