vitessio/vitess · error
no vdiff found for UUID %s keyspace %s and workflow %s on ta
Error message
no vdiff found for UUID %s keyspace %s and workflow %s on tablet %s
What it means
handleShowAction queries _vt.vdiff_tablet for the given UUID/keyspace/workflow; when zero rows are returned it errors that no vdiff matching those identifiers exists on this tablet. VDiff show is per-tablet, so this can occur even when the vdiff exists elsewhere in the workflow.
Source
Thrown at go/vt/vttablet/tabletmanager/vdiff/action.go:341
}
}
if vdiffUUID != "" {
resp.VdiffUuid = vdiffUUID
query, err := sqlparser.ParseAndBind(sqlGetVDiffByKeyspaceWorkflowUUID,
sqltypes.StringBindVariable(req.Keyspace),
sqltypes.StringBindVariable(req.Workflow),
sqltypes.StringBindVariable(vdiffUUID),
sqltypes.StringBindVariable(vde.dbName),
)
if err != nil {
return err
}
if qr, err = dbClient.ExecuteFetch(query, 1); err != nil {
return err
}
switch len(qr.Rows) {
case 0:
return fmt.Errorf("no vdiff found for UUID %s keyspace %s and workflow %s on tablet %s",
vdiffUUID, req.Keyspace, req.Workflow, topoproto.TabletAliasString(vde.thisTablet.Alias))
case 1:
row := qr.Named().Row()
vdiffID, _ := row["id"].ToInt64()
summary, err := vde.getVDiffSummary(vdiffID, dbClient, req.GetOptions().GetReportOptions())
resp.Output = summary
if err != nil {
return err
}
default:
return fmt.Errorf("too many vdiffs found (%d) for UUID %s keyspace %s and workflow %s on tablet %s",
len(qr.Rows), vdiffUUID, req.Keyspace, req.Workflow, topoproto.TabletAliasString(vde.thisTablet.Alias))
}
}
switch req.ActionArg {
case AllActionArg:
query, err := sqlparser.ParseAndBind(sqlGetMostRecentVDiffByKeyspaceWorkflow,
sqltypes.StringBindVariable(req.Keyspace),View on GitHub (pinned to 01a25a7d17)
Solutions
- List what exists: vtctldclient VDiff show (without UUID) for the workflow
- Verify the UUID spelling and that the workflow/keyspace match the original create
- Target the correct tablet via --tablet-uuid where the vdiff was created
- Create the vdiff if it never existed on this workflow/tablet
Example fix
// before vtctldclient VDiff show --keyspace c --workflow w --uuid wrong-id // after: list available vdiffs first vtctldclient VDiff show --keyspace c --workflow w vtctldclient VDiff show --keyspace c --workflow w --uuid <listed-uuid>
Defensive patterns
Strategy: validation
Validate before calling
qr, _ := dbClient.ExecuteFetch("SELECT id FROM _vt.vdiff_tablet WHERE uuid=? AND keyspace=? AND workflow=?", 1, true)
if len(qr.Rows) == 0 { return errors.New("no matching vdiff; run create first") } Try / catch
if strings.Contains(err.Error(), "no vdiff found for UUID") {
// fall back to listing all vdiffs for the workflow
} Prevention
- Run bare vdiff show to enumerate existing UUIDs before targeting one
- Store the UUID returned by create for later show/resume/delete calls
- Target the tablet that created the vdiff via --tablet-uuid
- Confirm keyspace/workflow names match the original create
When it happens
Trigger: vdiff show (or lastly show with a specific UUID) where the UUID+keyspace+workflow combination has no row on the queried tablet; omitting --tablet-uuid and hitting a tablet without the record.
Common situations: Querying show before any create; showing on the wrong tablet or before the vdiff propagated; typo in UUID; workflow renamed so the stored workflow no longer matches; tablet's _vt rows cleaned up after completion.
Understand the failure class
Background: Record Not Found Errors: "not found", RecordNotFound, and "was not found" — what they mean and how to fix them — this error's family across 28 libraries.
Related errors
- vdiff with UUID %s not found on tablet %s
- unable to %s vdiff for UUID %s as it was not found on tablet
- no vdiff found for id %d on tablet %v
- no state found for vdiff table %s for vdiff_id %d on tablet
- VDiff not implemented in vtcombo
AI-assisted analysis of vitessio/vitess@01a25a7d17 (2026-09-01).
Data as JSON: /api/errors/03d0f607235f01e6.
Report an issue: GitHub.