sqlx 0.9.0

🧰 The Rust SQL Toolkit. An async, pure Rust SQL crate featuring compile-time checked queries without a DSL. Supports PostgreSQL, MySQL, and SQLite.
Documentation


### Running Tests
SQLx uses docker to run many compatible database systems for integration testing. You'll need to [install docker](https://docs.docker.com/engine/) to run the full suite. You can validate your docker installation with:
    
    $ docker run hello-world

Start the databases with `docker compose` (or `docker-compose`) before running tests:

    $ docker compose up -d

Run clippy for the check matrix:

    $ ./x.py --clippy

This runs only the check/clippy matrix and skips unit and integration tests.

For the full test matrix, run all tests against all supported databases using:

    $ ./x.py

### Limiting the Matrix

The full matrix (runtimes, TLS backends, and DB versions) is large. Use the filters in `x.py` to keep runs small.

List all targets (tags):

    $ ./x.py --list-targets

Run by prefix (uses `tag.startswith`):

    $ ./x.py --target sqlite_tokio
    $ ./x.py --target postgres_17_tokio
    $ ./x.py --target mysql_8
    $ ./x.py --target mariadb_10_11

Note: integration tags do not include TLS, so a target like `postgres_17_tokio`
still runs all `TLS_VARIANTS`. To limit TLS locally, edit `TLS_VARIANTS` (and
`CHECK_TLS` for the check phase).

Run exactly one target:

    $ ./x.py --target-exact mysql_8_client_ssl_no_password_tokio

Run only one integration test binary:

    $ ./x.py --test sqlite
    $ ./x.py --test any

Pass extra args to cargo:

    $ ./x.py -- --nocapture

To shrink the matrix globally, edit the lists at the top of `tests/x.py`:
`CHECK_TLS`, `TLS_VARIANTS`, `POSTGRES_VERSIONS`, `MYSQL_VERSIONS`, `MARIADB_VERSIONS`.

If you see test failures, or want to run a more specific set of tests against a specific database, you can specify both the features to be tests and the DATABASE_URL. e.g.

    $ DATABASE_URL=mysql://root:password@127.0.0.1:49183/sqlx cargo test --no-default-features --features macros,offline,any,all-types,mysql,runtime-async-std-native-tls