SQLx 0.9.0 adds per-crate config for Rust workspaces
SQLx 0.9.0 finally gives Rust workspaces per-crate config, so multi-database apps can drop a lot of env-file juggling and migration hacks.
SQLx 0.9.0 tackles the pain point that shows up fastest in real Rust workspaces: one crate wants one database, another wants a different one, and the old single .env setup starts to fray. The release adds per-crate configuration through sqlx.toml, letting each crate rename DATABASE_URL, tune macro type overrides, move or rename the _sqlx_migrations table, and control which characters are ignored when hashing migrations.
That matters because the project is now meeting multi-crate applications where they actually live. SQLx’s own examples now include a three-crate multi-database workspace and a three-crate multi-tenant setup, each with separate schemas and migrations. In practical terms, teams can stop leaning so hard on hand-rolled per-crate environment handling and other migration workarounds when a workspace crosses from a single service into several services with different databases or schema rules.

The release, dated May 6, 2026, landed as SQLx moved under the transact-rs GitHub organization, with the project saying LaunchBadge, LLC. has not been the active owner for years and that stewardship has effectively sat with the principal authors. Alongside the new config model, sqlx-cli now reads sqlx.toml too, so the same settings can drive setup and migration commands instead of forcing one configuration path for the crate and another for the CLI. The migration docs also call out a practical detail that trips up cross-platform teams: line endings can change migration hashes, and sqlx.toml can tell SQLx to ignore whitespace and newlines.
SQLx 0.9.0 also widens runtime support by adding smol and async-global-executor as successors to deprecated async-std support. At the query layer, the project replaced the old &str parameter in query* functions with a type implementing SqlSafeStr, a change that makes safe SQL strings explicit. For SQLite users, libsqlite3-sys is now expressed as a version range rather than a single pinned version, which should help Cargo resolve compatibility with crates like rusqlite.
Before upgrading, the checks are straightforward but important: confirm Rust 1.94.0 is acceptable for the release cycle, update any code that assumes query* still takes a plain &str, and plan for the fact that cargo install locked sqlx-cli no longer works because Cargo.lock was removed from version control. For workspaces that have outgrown one database and one config file, SQLx 0.9.0 finally makes the shape of the codebase match the shape of the deployment.
This article was produced by Prism’s automated news system from verified source data, official records, and press releases, then run through automated quality and moderation checks before publishing. The system is built and supervised by the people who set the standards it runs under. Read our full AI policy.
Did this article answer your question?


