{"record":{"id":"e453d35dad909080","repo":"influxdata/influxdb","slug":"processing-engine-trigger-not-in-db","errorCode":null,"errorMessage":"Processing Engine Trigger {} not in DB {}","messagePattern":"Processing Engine Trigger (.+?) not in DB (.+?)","errorType":"error_code","errorClass":"CatalogError","httpStatus":null,"severity":"error","filePath":"influxdb3_catalog/src/error.rs","lineNumber":254,"sourceCode":"        database_name: String,\n        plugin_name: String,\n        trigger_name: String,\n    },\n\n    #[error(\n        \"Processing Engine Plugin {} not in DB schema for {}\",\n        plugin_name,\n        database_name\n    )]\n    ProcessingEnginePluginNotFound {\n        plugin_name: String,\n        database_name: String,\n    },\n\n    #[error(\"Processing Engine Unimplemented: {}\", feature_description)]\n    ProcessingEngineUnimplemented { feature_description: String },\n\n    #[error(\n        \"Processing Engine Trigger {} not in DB {}\",\n        trigger_name,\n        database_name\n    )]\n    ProcessingEngineTriggerNotFound {\n        database_name: String,\n        trigger_name: String,\n    },\n\n    #[error(\"failed to parse trigger from {}\", trigger_spec)]\n    ProcessingEngineTriggerSpecParseError { trigger_spec: String },\n\n    #[error(\"last cache size must be greater than 0\")]\n    InvalidLastCacheSize,\n\n    #[error(\"failed to parse trigger from {trigger_spec}{}\", .context.as_ref().map(|context| format!(\": {context}\")).unwrap_or_default())]\n    TriggerSpecificationParseError {\n        trigger_spec: String,","sourceCodeStart":236,"sourceCodeEnd":272,"githubUrl":"https://github.com/influxdata/influxdb/blob/06200ef96ba82c5f6727e5038a83af8e722c6875/influxdb3_catalog/src/error.rs#L236-L272","documentation":"A Processing Engine operation referenced a trigger by name that does not exist in the given database. The catalog looks up triggers per database schema and throws this error when the (database_name, trigger_name) pair cannot be resolved.","triggerScenarios":"DROP/DISABLE/ENABLE TRIGGER or the corresponding catalog API calls with a trigger_name that was never created in database_name, or that was already deleted.","commonSituations":"Typo in trigger name; running teardown scripts twice (trigger already dropped); operating on the wrong database; triggers lost after a catalog restore.","solutions":["List existing triggers in the database to confirm the exact name (SHOW TRIGGERS / catalog query).","Correct the trigger name or database name in your command.","Make teardown scripts idempotent by tolerating 'not found' responses for DROP/DISABLE operations."],"exampleFix":"// before\nDROP TRIGGER \"my_triger\" ON DATABASE mydb;\n// after (use the exact existing name)\nDROP TRIGGER \"my_trigger\" ON DATABASE mydb;","handlingStrategy":"validation","validationCode":"// Verify the trigger exists before operating on it\nconst triggers = await client.listTriggers(db);\nif (!triggers.some(t => t.triggerName === name)) {\n  return; // nothing to do; make scripts idempotent\n}\nawait client.deleteTrigger(db, name);","typeGuard":"function triggerExists(triggers, name) {\n  return Array.isArray(triggers) && triggers.some(t => t?.triggerName === name);\n}","tryCatchPattern":"try {\n  await deleteTrigger(db, name);\n} catch (e) {\n  if (String(e).includes('not in DB')) {\n    // already gone: treat as success in idempotent teardown\n  } else throw e;\n}","preventionTips":["List triggers before drop/disable operations","Make teardown scripts tolerate missing triggers","Centralize trigger names in config shared by create and delete paths"],"tags":["processing-engine","trigger","not-found","influxdb"],"backgroundTag":"entity-not-found","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"}