.. | ||
src | ||
.gitignore | ||
Cargo.toml | ||
README.md |
SQLx CLI
SQLx's associated command-line utility for managing databases, migrations, and enabling "offline"
mode with sqlx::query!()
and friends.
Install
# supports all databases supported by SQLx
$ cargo install sqlx-cli
# only for postgres
$ cargo install sqlx-cli --no-default-features --features postgres
Commands
All commands require DATABASE_URL
to be set, either in the environment or in a .env
file
in the current working directory.
database
and migrate
subcommands support only Postgres; MySQL and SQLite are TODO.
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 migration run
Compares the migration history of the running database against the migrations/
folder and runs
any scripts that are still pending.
Note: Down-Migrations
Down-migrations are currently a non-planned feature as their utility seems dubious but we welcome any contributions (discussions/code) regarding this matter.
Enable building in "offline" mode with query!()
Note: must be run as cargo sqlx
.
cargo sqlx prepare
Saves query data to sqlx-data.json
in the current directory; check this file into version control
and an active database connection will no longer be needed to build your project.
cargo sqlx prepare --check
Exits with a nonzero exit status if the data in sqlx-data.json
is out of date with the current
database schema and queries in the project. Intended for use in Continuous Integration.