Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Error codes

Every failure rivet names carries a stable RIVET_<FAMILY>_<NAME> code: in --json-errors output as code, and as a [CODE] prefix on the text error line. The KIND decides the exit code.

exitmeaning
1usage — fix the config or the command; retrying fails the same way
2a transient failure — retry the same command
3integrity — the data may be wrong; stop and investigate
4schema drift — the source shape changed; review before re-running
5refusal — rivet stopped on purpose to protect data; a human decides
6internal — an invariant did not hold; a bug, please report it
codekindexitwhat to do
RIVET_CONFIG_NO_EXPORTSusage1declare at least one export under exports:
RIVET_CONFIG_CHUNK_COUNT_INVALIDusage1set chunk_count to 1 or more
RIVET_CONFIG_CHUNK_BY_DAYS_INVALIDusage1set chunk_by_days to 1 or more
RIVET_CONFIG_DUPLICATE_EXPORTusage1give every export a unique name
RIVET_CONFIG_CDC_RESOURCE_CONFLICTusage1give each CDC export its own slot / server_id / checkpoint path
RIVET_CONFIG_CDC_ROLLOVER_INVALIDusage1set cdc.rollover to 1 or more, or omit it
RIVET_CONFIG_CDC_CONTINUOUS_UNSUPPORTEDusage1omit cdc.until_current (or --stream) and run the bounded drain on a schedule
RIVET_CONFIG_CSV_LOAD_UNSUPPORTEDusage1use format: parquet for an export with a load: section
RIVET_CONFIG_SOURCE_MODE_UNSUPPORTEDusage1use a mode this source supports (MongoDB: full)
RIVET_CONFIG_SOURCE_URL_SCHEME_MISMATCHusage1make source.type and the URL scheme name the same engine
RIVET_CONFIG_KEYSET_KEY_UUID_OVERRIDEusage1key the keyset on another unique column, or use mode: full for this table
RIVET_CONFIG_CURSOR_COLUMN_CASEusage1spell cursor_column exactly as the result set names the column
RIVET_CONFIG_COLUMN_OVERRIDE_CASEusage1spell the columns: key exactly as the result set names the column
RIVET_SOURCE_STATEMENT_TIMEOUTenvironment2 if transient, else 1raise tuning.statement_timeout_s, or narrow the chunk
RIVET_SOURCE_CURSOR_FINER_THAN_MICROSECONDrefusal5cursor on a column at microsecond precision or coarser, or cast the cursor to TIMESTAMP(6) in a curated query
RIVET_SOURCE_CDC_FOREIGN_CHECKPOINTrefusal5delete the checkpoint so the next run anchors afresh FIRST, then re-snapshot the tables
RIVET_SOURCE_CDC_CHECKPOINT_INVALIDrefusal5restore the checkpoint file, or delete it so the stream anchors FIRST, then re-snapshot
RIVET_SOURCE_CDC_LOG_GAPrefusal5restore the missing log, or delete the checkpoint so the stream anchors FIRST, then re-snapshot
RIVET_SOURCE_CDC_TRUNCATEDrefusal5delete the checkpoint so the stream anchors FIRST, then re-snapshot the table
RIVET_SOURCE_CDC_UNDECODABLErefusal5re-snapshot the table: delete the checkpoint first so the stream anchors, then snapshot
RIVET_SOURCE_CDC_CELL_UNSUPPORTEDrefusal5leave the column out of the capture (SQL Server: @captured_column_list), then re-snapshot
RIVET_SOURCE_CDC_PREREQUISITEenvironment2 if transient, else 1apply the setup statement the message names, then re-run (docs/reference/cdc.md)
RIVET_SOURCE_VALUE_UNREPRESENTABLErefusal5map the value to a representable one in the export’s query:, or exclude the column
RIVET_SOURCE_OVERRIDE_WIRE_MISMATCHusage1remove or correct the column’s columns: override, or CAST the column to that type in the export’s query:
RIVET_STATE_SCHEMA_NEWERrefusal5upgrade rivet, or point this binary at a state DB it created
RIVET_STATE_CURSOR_OWNER_MISMATCHrefusal5rivet state reset -c <config> --export <name> to start the new cursor with a full pass, or restore the previous cursor column
RIVET_STATE_KEYSET_SEQUENTIAL_ANCHOR_UNFINISHEDrefusal5re-run once with parallel: 1 to finish the interrupted run, then raise parallel:
RIVET_LOAD_VALUE_OUT_OF_TARGET_RANGErefusal5the warehouse type cannot hold this value; declare a wider type (e.g. String) for the column, or fix the source value
RIVET_LOAD_COUNT_MISMATCHintegrity3compare the warehouse table with the run’s manifest before re-running; the source is kept
RIVET_LOAD_ADOPTION_COLUMN_MISMATCHrefusal5add the export’s new columns to the table (ALTER TABLE … ADD COLUMN) and re-run; do not rename it aside
RIVET_INTERNAL_VALUE_CONVERTERinternal6a value changed between the source and the written part — a bug; report it with the column’s type
RIVET_INTERNAL_SPILLinternal6the CDC spill log is inconsistent — a bug or a damaged spill directory; report it and re-run
RIVET_INTERNAL_TYPE_BUILDERinternal6a column builder got a type it cannot build — a bug; report it with the column’s type