Skip to main content

SQLx CLI

SQLx's associated command-line utility for managing databases, migrations, and enabling "offline" mode with sqlx::query!() and friends.

Install

With Rust toolchain

# supports all databases supported by SQLx
$ cargo install sqlx-cli

# only for postgres
$ cargo install sqlx-cli --no-default-features --features native-tls,postgres

# use vendored OpenSSL (build from source)
$ cargo install sqlx-cli --features openssl-vendored

# use Rustls rather than OpenSSL (be sure to add the features for the databases you intend to use!)
$ cargo install sqlx-cli --no-default-features --features rustls

# only for sqlite and use the system sqlite library
$ cargo install sqlx-cli --no-default-features --features sqlite-unbundled

Usage

All commands require that a database url is provided. This can be done either with the --database-url command line option or by setting DATABASE_URL, either in the environment or in a .env file in the current working directory.

For more details, run sqlx <command> --help.

# Postgres
DATABASE_URL=postgres://postgres@localhost/my_database

Create/drop the database at DATABASE_URL

sqlx database create
sqlx database drop

Create and run migrations

sqlx migrate add <name>

Creates a new file in migrations/<timestamp>-<name>.sql. Add your database schema changes to this new file.


sqlx migrate run

Compares the migration history of the running database against the migrations/ folder and runs any scripts that are still pending.


Users can provide the directory for the migration scripts to sqlx migrate subcommands with the --source flag.

sqlx migrate info --source ../relative/migrations

Reverting Migrations

If you would like to create reversible migrations with corresponding "up" and "down" scripts, you use the -r flag when creating the first migration:

$ sqlx migrate add -r <name>
Creating migrations/20211001154420_<name>.up.sql
Creating migrations/20211001154420_<name>.down.sql

After that, you can run these as above:

$ sqlx migrate run
Applied migrations/20211001154420 <name> (32.517835ms)

And reverts work as well:

$ sqlx migrate revert
Applied 20211001154420/revert <name>

Note: All the subsequent migrations will be reversible as well.

$ sqlx migrate add <name1>
Creating migrations/20211001154420_<name>.up.sql
Creating migrations/20211001154420_<name>.down.sql

Enable building in "offline mode" with query!()

There are 2 steps to building with "offline mode":

  1. Save query metadata for offline usage
    • cargo sqlx prepare
  2. Build

Note: Saving query metadata must be run as cargo sqlx.

cargo sqlx prepare

Invoking prepare saves query metadata to .sqlx in the current directory. For workspaces where several crates are using query macros, pass the --workspace flag to generate a single .sqlx directory at the root of the workspace.

cargo sqlx prepare --workspace

Check this directory into version control and an active database connection will no longer be needed to build your project.


cargo sqlx prepare --check
# OR
cargo sqlx prepare --check --workspace

Exits with a nonzero exit status if the data in .sqlx is out of date with the current database schema or queries in the project. Intended for use in Continuous Integration.

Force building in offline mode

The presence of a DATABASE_URL environment variable will take precedence over the presence of .sqlx, meaning SQLx will default to building against a database if it can. To make sure an accidentally-present DATABASE_URL environment variable or .env file does not result in cargo build (trying to) access the database, you can set the SQLX_OFFLINE environment variable to true.

If you want to make this the default, just add it to your .env file. cargo sqlx prepare will still do the right thing and connect to the database.

Include queries behind feature flags (such as queries inside of tests)

In order for sqlx to be able to find queries behind certain feature flags or in tests, you need to turn them on by passing arguments to cargo.

This is how you would turn all targets and features on.

cargo sqlx prepare -- --all-targets --all-features

Metadata

Release files for rust-sqlx-cli 0.8.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for rust-sqlx-cli 0.8.6
File Interpreter ABI Platform
rust_sqlx_cli-0.8.6-py3-none-manylinux_2_34_x86_64.whl Python 3 none Linux glibc 2.34+ x86-64 Details

Release files / rust_sqlx_cli-0.8.6-py3-none-manylinux_2_34_x86_64.whl

Download URL rust_sqlx_cli-0.8.6-py3-none-manylinux_2_34_x86_64.whl
Size 9.8 MB
Tags Linux glibc 2.34+ x86-64 Python 3
SHA-256 checksum
How to use checksums
c0dc01d2b9efd4f5f03911489a71354165e1b39db01f5ad82ef9e4aab4784b98
BLAKE2b-256 checksum
How to use checksums
14b27a1b387270e55b0dacf0fcf6400d2cbfb928053455316291ecc21cb7f723
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.16 {"installer":{"name":"uv","version":"0.9.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for rust-sqlx-cli 0.8.6

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

0.8.6 This release

1 release file No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page