SQLx Rust async SQL toolkit expert. Assists with compile-time checked queries, connection pooling, migrations, transactions, FromRow derive, QueryBuilder, type mappings, and testing. Use when working with SQLx, database queries in Rust, sqlx::query!, Pool configuration, database migrations, or Rust database code. Keywords: sqlx, rust database, query macro, pool, migration, transaction, FromRow, postgres rust, mysql rust, sqlite rust, compile-time SQL
Comprehensive assistant for the SQLx async SQL toolkit in Rust. Covers compile-time checked queries, connection pooling, migrations, transactions, type mappings, dynamic query building, error handling, and testing.
sqlx-postgres)sqlx-mysql)sqlx-sqlite)query! / query_as!PoolOptionsQueryBuilder#[sqlx::test] test functions with fixturesDATABASE_URL at compile time (or offline mode with .sqlx/ directory)cargo sqlx prepare for CI without database access"column!" or "column?"max_connections, acquire_timeout, and idle_timeoutconnect_lazy when connection isn't needed immediatelypool.close().await for graceful shutdown&mut *tx when passing to query executionpush() with user input in QueryBuilderpush_bind() for untrusted valuesquery! macro bind parameters are inherently saferuntime-tokio or runtime-async-stdtls-rustls (preferred) or tls-native-tlschrono, time, uuid, rust_decimal, bigdecimal, json, ipnetworkmigrate feature required for #[sqlx::test]Detailed guidance on specific topics:
Query macros — query!, query_as!, query_scalar!, offline mode, bind params, type overrides
References: query-macros
Connection pooling — Pool creation, PoolOptions, configuration, lifecycle, Executor impl
References: connection-pooling
FromRow & type mappings — derive attributes, Postgres/MySQL/SQLite type tables, custom types
References: from-row-and-types
Transactions — begin/commit/rollback, savepoints, auto-rollback, isolation levels
References: transactions
Migrations — migrate! macro, sqlx-cli, file naming, reversible migrations, programmatic execution
References: migrations
QueryBuilder — dynamic SQL, push_bind, separated lists, bulk inserts, SQL injection safety
References: query-builder
Testing — #[sqlx::test], fixtures, test database management, Pool/PoolConnection signatures
References: testing
Error handling — Error enum variants, DatabaseError matching, common error patterns
References: error-handling
Typical feature configuration:
[dependencies]
sqlx = { version = "0.8", features = [
"runtime-tokio",
"tls-rustls",
"postgres", # or "mysql", "sqlite"
"migrate",
"chrono", # or "time"
"uuid",
"json",
] }
# Install CLI
cargo install sqlx-cli --features postgres
# Create database
sqlx database create
# Create migration
sqlx migrate add <name>
# Run migrations
sqlx migrate run
# Prepare offline query data
cargo sqlx prepare
# Verify offline data is current
cargo sqlx prepare --check