nautechsystems/nautilus_trader · error · anyhow::Error
Unsupported execution verification schema version {installed
Error message
Unsupported execution verification schema version {installed} What it means
Raised in database.rs:3691 (load_execution_verification_position) when the installed execution_verification schema version recorded in execution_schema_version exceeds VERIFICATION_SCHEMA_VERSION compiled into this binary. The library refuses to read verification state produced by a newer, unknown schema because row layouts and semantics may differ, preventing silent data corruption.
Source
Thrown at crates/adapters/blockchain/src/cache/database.rs:3691
/// Loads the durable finalized-header and nonce position when verification is active.
pub(crate) async fn load_execution_verification_position(
&self,
chain_id: u32,
wallet_address: &str,
manifest_version: &str,
manifest_digest: &str,
) -> anyhow::Result<Option<ExecutionVerificationPosition>> {
let installed = sqlx::query_scalar::<_, i16>(
"SELECT version FROM execution_schema_version \
WHERE component = 'evm_execution_verification'",
)
.fetch_optional(&self.pool)
.await
.context("failed to inspect execution verification schema")?;
let Some(installed) = installed else {
return Ok(None);
};
anyhow::ensure!(
installed <= VERIFICATION_SCHEMA_VERSION,
"Unsupported execution verification schema version {installed}"
);
let chain_id =
i32::try_from(chain_id).context("Verification chain ID exceeds PostgreSQL INTEGER")?;
let current = sqlx::query_as::<_, (String, String, i64, i64)>(
"
SELECT manifest_version, manifest_digest, next_canonical_nonce, revision
FROM execution_verification_nonce
WHERE chain_id = $1 AND wallet_address = $2
",
)
.bind(chain_id)
.bind(wallet_address)
.fetch_optional(&self.pool)
.await
.context("failed to load execution verification nonce position")?;
let Some((stored_version, stored_digest, nonce, revision)) = current else {View on GitHub (pinned to 18893faf8b)
Solutions
- Run the binary version that supports the installed verification schema version.
- Inspect the installed version: SELECT version FROM execution_schema_version WHERE component = 'evm_execution_verification'; and confirm it matches your build's VERIFICATION_SCHEMA_VERSION.
- Roll the database back from backup if the upgrade was unintended, or upgrade the application binary instead of downgrading.
- Never hand-edit the version row to make an old binary accept new data.
Example fix
// before: mismatched binary code.examples // after: deploy the binary compiled against the installed verification schema // (upgrade application to a release whose VERIFICATION_SCHEMA_VERSION >= installed)
Defensive patterns
Strategy: validation
Validate before calling
let installed: Option<i16> = sqlx::query_scalar(
"SELECT version FROM execution_schema_version WHERE component = 'evm_execution_verification'",
).fetch_optional(&pool).await?;
if installed.map_or(false, |v| v > VERIFICATION_SCHEMA_VERSION) {
anyhow::bail!("database verification schema {installed:?} newer than this binary");
} Try / catch
match db.load_execution_verification_position(chain, wallet, ver, digest).await {
Err(e) if e.to_string().contains("Unsupported execution verification schema version") => {
// deploy the newer binary or restore the DB backup
},
other => other?,
} Prevention
- Pin application and database schema versions together in deployment
- Never downgrade the binary below the installed schema version
- Alert on version rows changing outside migrations
When it happens
Trigger: Loading execution verification position when SELECT version ... WHERE component = 'evm_execution_verification' returns a value greater than VERIFICATION_SCHEMA_VERSION (e.g. database was upgraded by a newer build, then an older binary reads it).
Common situations: Downgrading the node to an older release after the verification schema was upgraded; pointing an older binary at a database migrated by a newer deployment; mixed-version blue-green deployment where the old instance reads state the new instance upgraded.
Related errors
- Execution schema version {} is newer than supported version
- Execution verification schema version {installed_version} is
- Execution payload protocol version {} is not supported
- unsupported canonical backtest result schema
- Failed to read execution schema version: {e}
AI-assisted analysis of nautechsystems/nautilus_trader@18893faf8b (2026-09-08).
Data as JSON: /api/errors/c9011285b13ff2ed.
Report an issue: GitHub.