pub struct MigrateOptions {
pub version_storage: VersionStorage,
pub backup: bool,
pub backup_options: Option<DbOptions>,
pub forward_compatible: Option<fn(&Connection) -> bool>,
pub optimize_after: bool,
pub legacy_versions: Option<LegacyVersionTable>,
}Fields§
§version_storage: VersionStorageVersion location shared by reads and transactional migration writes.
backup: boolTake a pre-migration backup when migrating an existing (version > 0) on-disk database.
backup_options: Option<DbOptions>Key source for the backup (SQLCipher); DbOptions::open_writer_migrated fills this in.
forward_compatible: Option<fn(&Connection) -> bool>For a database newer than this build: true means the subset this build reads/writes is
intact, so open it read-write without migrating.
optimize_after: boolRefresh planner statistics after migrating (PRAGMA optimize).
legacy_versions: Option<LegacyVersionTable>Adopt an existing app version table (see MigrateOptions::import_legacy_versions). Default none.
Implementations§
Source§impl MigrateOptions
impl MigrateOptions
Sourcepub fn import_legacy_versions(self, legacy: LegacyVersionTable) -> Self
pub fn import_legacy_versions(self, legacy: LegacyVersionTable) -> Self
Adopt the applied version of an app’s existing version table, once, so its migrations are
not re-run. Applies only when the configured storage reads version 0 and the legacy table’s
highest version is above zero. The configured storage is then seeded to that version (a
VersionTable gets one row per version up to it), and the migrations up to it are skipped.
The legacy table is only read, never written. Idempotent: once seeded, the configured
storage is above zero, so later opens do not consult the legacy table. Rolling back to
version 0 while the legacy table still exists re-adopts it on the next open, so drop or
rename that table after adoption. A legacy version above this build’s newest migration is
refused as DbError::NewerDatabase and nothing is written.