MigrateCommand

Enum MigrateCommand 

Source
pub enum MigrateCommand {
    Add(AddMigrationOpts),
    Run {
        source: MigrationSourceOpt,
        config: ConfigOpt,
        dry_run: bool,
        ignore_missing: IgnoreMissing,
        connect_opts: ConnectOpts,
        target_version: Option<i64>,
    },
    Revert {
        source: MigrationSourceOpt,
        config: ConfigOpt,
        dry_run: bool,
        ignore_missing: IgnoreMissing,
        connect_opts: ConnectOpts,
        target_version: Option<i64>,
    },
    Info {
        source: MigrationSourceOpt,
        config: ConfigOpt,
        connect_opts: ConnectOpts,
    },
    BuildScript {
        source: MigrationSourceOpt,
        config: ConfigOpt,
        force: bool,
    },
}

Variants§

§

Add(AddMigrationOpts)

Create a new migration with the given description.


Migrations may either be simple, or reversible.

Reversible migrations can be reverted with sqlx migrate revert, simple migrations cannot.

Reversible migrations are created as a pair of two files with the same filename but extensions .up.sql and .down.sql for the up-migration and down-migration, respectively.

The up-migration should contain the commands to be used when applying the migration, while the down-migration should contain the commands to reverse the changes made by the up-migration.

When writing down-migrations, care should be taken to ensure that they do not leave the database in an inconsistent state.

Simple migrations have just .sql for their extension and represent an up-migration only.

Note that reverting a migration is destructive and will likely result in data loss. Reverting a migration will not restore any data discarded by commands in the up-migration.

It is recommended to always back up the database before running migrations.


For convenience, this command attempts to detect if reversible migrations are in-use.

If the latest existing migration is reversible, the new migration will also be reversible.

Otherwise, a simple migration is created.

This behavior can be overridden by --simple or --reversible, respectively.

The default type to use can also be set in sqlx.toml.


A version number will be automatically assigned to the migration.

Migrations are applied in ascending order by version number. Version numbers do not need to be strictly consecutive.

The migration process will abort if SQLx encounters a migration with a version number less than any previously applied migration.

Migrations should only be created with increasing version number.


For convenience, this command will attempt to detect if sequential versioning is in use, and if so, continue the sequence.

Sequential versioning is inferred if:

  • The version numbers of the last two migrations differ by exactly 1, or:

  • only one migration exists and its version number is either 0 or 1.

Otherwise, timestamp versioning (YYYYMMDDHHMMSS) is assumed.

This behavior can be overridden by --timestamp or --sequential, respectively.

The default versioning to use can also be set in sqlx.toml.

§

Run

Run all pending migrations.

Fields

§config: ConfigOpt
§dry_run: bool

List all the migrations to be run without applying

§ignore_missing: IgnoreMissing
§connect_opts: ConnectOpts
§target_version: Option<i64>

Apply migrations up to the specified version. If unspecified, apply all pending migrations. If already at the target version, then no-op.

§

Revert

Revert the latest migration with a down file.

Fields

§config: ConfigOpt
§dry_run: bool

List the migration to be reverted without applying

§ignore_missing: IgnoreMissing
§connect_opts: ConnectOpts
§target_version: Option<i64>

Revert migrations down to the specified version. If unspecified, revert only the last migration. Set to 0 to revert all migrations. If already at the target version, then no-op.

§

Info

List all available migrations.

Fields

§config: ConfigOpt
§connect_opts: ConnectOpts
§

BuildScript

Generate a build.rs to trigger recompilation when a new migration is added.

Must be run in a Cargo project root.

Fields

§config: ConfigOpt
§force: bool

Overwrite the build script if it already exists.

Trait Implementations§

Source§

impl CommandFactory for MigrateCommand

Source§

fn command<'b>() -> Command

Build a Command that can instantiate Self. Read more
Source§

fn command_for_update<'b>() -> Command

Build a Command that can update self. Read more
Source§

impl Debug for MigrateCommand

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl FromArgMatches for MigrateCommand

Source§

fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>

Instantiate Self from ArgMatches, parsing the arguments as needed. Read more
Source§

fn from_arg_matches_mut( __clap_arg_matches: &mut ArgMatches, ) -> Result<Self, Error>

Instantiate Self from ArgMatches, parsing the arguments as needed. Read more
Source§

fn update_from_arg_matches( &mut self, __clap_arg_matches: &ArgMatches, ) -> Result<(), Error>

Assign values from ArgMatches to self.
Source§

fn update_from_arg_matches_mut<'b>( &mut self, __clap_arg_matches: &mut ArgMatches, ) -> Result<(), Error>

Assign values from ArgMatches to self.
Source§

impl Parser for MigrateCommand

Source§

fn parse() -> Self

Parse from std::env::args_os(), exit on error.
Source§

fn try_parse() -> Result<Self, Error>

Parse from std::env::args_os(), return Err on error.
Source§

fn parse_from<I, T>(itr: I) -> Self
where I: IntoIterator<Item = T>, T: Into<OsString> + Clone,

Parse from iterator, exit on error.
Source§

fn try_parse_from<I, T>(itr: I) -> Result<Self, Error>
where I: IntoIterator<Item = T>, T: Into<OsString> + Clone,

Parse from iterator, return Err on error.
Source§

fn update_from<I, T>(&mut self, itr: I)
where I: IntoIterator<Item = T>, T: Into<OsString> + Clone,

Update from iterator, exit on error. Read more
Source§

fn try_update_from<I, T>(&mut self, itr: I) -> Result<(), Error>
where I: IntoIterator<Item = T>, T: Into<OsString> + Clone,

Update from iterator, return Err on error.
Source§

impl Subcommand for MigrateCommand

Source§

fn augment_subcommands<'b>(__clap_app: Command) -> Command

Append to Command so it can instantiate Self via FromArgMatches::from_arg_matches_mut Read more
Source§

fn augment_subcommands_for_update<'b>(__clap_app: Command) -> Command

Append to Command so it can instantiate self via FromArgMatches::update_from_arg_matches_mut Read more
Source§

fn has_subcommand(__clap_name: &str) -> bool

Test whether Self can parse a specific subcommand

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,