sqlx/sqlx-cli
2020-06-17 12:46:57 -07:00
..
src fix(cli): fix core usage in sqlx-cli 2020-05-30 23:12:53 -07:00
.gitignore rename cargo-sqlx -> sqlx-cli 2020-05-30 16:02:37 -07:00
Cargo.toml chore: bump version to 0.4.0-pre 2020-05-30 23:15:52 -07:00
README.md fix(format): fix formatting in sqlx-cli/README.md 2020-06-17 12:46:57 -07:00

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.