{"record":{"id":"f9eca25e177d7271","repo":"influxdata/influxdb","slug":"cannot-overwrite-processing-engine-trigger-in-database","errorCode":null,"errorMessage":"Cannot overwrite Processing Engine Trigger {} in Database {}","messagePattern":"Cannot overwrite Processing Engine Trigger (.+?) in Database (.+?)","errorType":"error_code","errorClass":"CatalogError","httpStatus":null,"severity":"error","filePath":"influxdb3_catalog/src/error.rs","lineNumber":213,"sourceCode":"    },\n\n    #[error(\n        \"Series key mismatch on table {}. Existing table has {}\",\n        table_name,\n        existing\n    )]\n    SeriesKeyMismatch {\n        table_name: String,\n        existing: String,\n    },\n\n    #[error(\"catalog subscription error: {0}\")]\n    Subscription(#[from] SubscriptionError),\n\n    #[error(transparent)]\n    Other(#[from] anyhow::Error),\n\n    #[error(\n        \"Cannot overwrite Processing Engine Trigger {} in Database {}\",\n        trigger_name,\n        database_name\n    )]\n    ProcessingEngineTriggerExists {\n        database_name: String,\n        trigger_name: String,\n    },\n\n    #[error(\n        \"Cannot delete running plugin {}. Disable it first or use --force.\",\n        trigger_name\n    )]\n    ProcessingEngineTriggerRunning { trigger_name: String },\n\n    #[error(\n        \"Cannot delete plugin {} in database {} because it is used by trigger {}\",\n        plugin_name,","sourceCodeStart":195,"sourceCodeEnd":231,"githubUrl":"https://github.com/influxdata/influxdb/blob/06200ef96ba82c5f6727e5038a83af8e722c6875/influxdb3_catalog/src/error.rs#L195-L231","documentation":"The catalog already contains a Processing Engine trigger with the given name in the given database, and the requested operation would overwrite it. InfluxDB 3 refuses to silently replace an existing trigger definition, so the call fails with this error.","triggerScenarios":"Calling the Processing Engine trigger creation/install API (e.g. CREATE TRIGGER or the catalog's processing-engine trigger write) with a trigger_name that already exists in database_name, without explicitly replacing/deleting it first.","commonSituations":"Re-running a setup script that installs triggers idempotently but lacks replace semantics; renaming plugin code but reusing an old trigger name; deploying the same trigger to a database where a prior deployment left it installed.","solutions":["Delete the existing trigger first (DROP TRIGGER / delete trigger API), then create it with the new definition.","Use the replace/overwrite option of the trigger-creation API if one is exposed instead of plain create.","Pick a new, unique trigger name if both triggers should coexist.","Make deployment scripts idempotent: check whether the trigger exists and compare its definition before creating."],"exampleFix":"// before\nCREATE TRIGGER \"my_trigger\" ON DATABASE mydb ...;\n// after (remove the stale trigger first)\nDROP TRIGGER \"my_trigger\" ON DATABASE mydb;\nCREATE TRIGGER \"my_trigger\" ON DATABASE mydb ...;","handlingStrategy":"validation","validationCode":"// Check trigger existence before creating\nconst existing = await client.listTriggers(db);\nif (existing.some(t => t.triggerName === name)) {\n  await client.deleteTrigger(db, name); // or use replace semantics\n}\nawait client.createTrigger(db, { triggerName: name, /* ... */ });","typeGuard":"function triggerExists(triggers, name) {\n  return Array.isArray(triggers) && triggers.some(t => t?.triggerName === name);\n}","tryCatchPattern":"try {\n  await createTrigger(db, spec);\n} catch (e) {\n  if (String(e).includes('Cannot overwrite Processing Engine Trigger')) {\n    await deleteTrigger(db, spec.triggerName);\n    await createTrigger(db, spec);\n  } else throw e;\n}","preventionTips":["Make trigger deployment scripts idempotent (check-then-create or delete-then-create)","Use deterministic trigger names derived from your deployment config","Never reuse an old trigger name for a semantically different trigger"],"tags":["processing-engine","trigger","conflict","influxdb"],"backgroundTag":"file-already-exists","analyzedSha":"06200ef96ba82c5f6727e5038a83af8e722c6875","analyzedAt":"2026-09-19T12:55:30.003Z","contentChangedAt":"2026-09-19T12:55:30.003Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}