General errors
Thrown as NoResultsError, MultipleResultsError, InvalidChangesetError, StaleEntryError and NotLoadedError, each with one message. Each entry is an identifier (error.id), then the message as the error states it, where {expression} stands for the value of that expression in the source ({…} for one too long to show), then what to do about it: the text useFullErrorMessages(messages) and explain(error) add, where {name} stands for the error's parameter of that name. See Errors.
invalidChangeset
Could not perform {details.action} because the changeset is invalid. Errors: {listing}
Fix the input, or call the variant without "OrThrow" to get the changeset back as a Result instead of an exception.
multipleResults
Expected at most one result but got {details.count}{inQuery(query)}.
Narrow the query until it matches a single row, add limit(1), or use all().
noResults
Expected at least one result but got none{inQuery(query)}.
Use the variant without "OrThrow" (it returns null) if a missing row is not an error.
notLoaded
Association "{details.association}" of {details.schema} is not loaded.
Preload it first: add .preload("{association}") to the query, or call repo.preload(rows, "{association}").
staleEntry
Attempted to {details.action} a stale {details.schema} row: no row matched its primary key{…}.
It was deleted or changed since it was loaded. Reload it and try again, or pass allowStale: true to ignore this.

