In germinator, seed entries are explicitly "synchronized" or "non-synchronized". The simplest way to explain this term is the question "should germinator update this database row when it's re-run and field values have changed?".

The longer definition:

  • Germinator will UPDATE the row when any field value resolves differently
  • Germinator will DELETE the row if it's found to be missing in subsequent runs

This behavior is opt-in via the top-level synchronize or per-entry $synchronize.

germinator: v2
synchronize: true

  - TableA:
      $id: table-a-1
      $synchronize: false

A note on --noTracking

You can opt-out of all synchronization via the --noTracking flag in the CLI. We don't really recommend this, but it's a supported use case. Note that even if you don't need to synchronize values, it's still useful to track inserted values. Otherwise, germinator has no choice but to re-insert the same seed every time it's run.