{"record":{"id":"60fbf9bb2de1dfb6","repo":"influxdata/influxdb","slug":"database-name-error-0","errorCode":null,"errorMessage":"database name error: {0}","messagePattern":"database name error: (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"influxdb3_write/src/write_buffer/mod.rs","lineNumber":92,"sourceCode":"    EmptyWrite,\n\n    #[error(\"column type mismatch for column {name}: existing: {existing:?}, new: {new:?}\")]\n    ColumnTypeMismatch {\n        name: String,\n        existing: ColumnType,\n        new: ColumnType,\n    },\n\n    #[error(\"catalog update error: {0}\")]\n    CatalogUpdateError(#[from] CatalogError),\n\n    #[error(\"error from persister: {0}\")]\n    PersisterError(#[from] PersisterError),\n\n    #[error(\"corrupt load state: {0}\")]\n    CorruptLoadState(String),\n\n    #[error(\"database name error: {0}\")]\n    DatabaseNameError(#[from] DatabaseNameError),\n\n    #[error(\"error from table buffer: {0}\")]\n    TableBufferError(#[from] table_buffer::Error),\n\n    #[error(\"error in last cache: {0}\")]\n    LastCacheError(#[from] last_cache::Error),\n\n    #[error(\"database not found {db_name:?}\")]\n    DatabaseNotFound { db_name: String },\n\n    #[error(\"table not found {table_name:?} in db {db_name:?}\")]\n    TableNotFound { db_name: String, table_name: String },\n\n    #[error(\"tried accessing database that does not exist\")]\n    DbDoesNotExist,\n\n    #[error(\"tried creating database named '{0}' that already exists\")]","sourceCodeStart":74,"sourceCodeEnd":110,"githubUrl":"https://github.com/influxdata/influxdb/blob/06200ef96ba82c5f6727e5038a83af8e722c6875/influxdb3_write/src/write_buffer/mod.rs#L74-L110","documentation":"This transparent wrapper (`#[from]`) converts a DatabaseNameError — raised when a database name fails validation (invalid characters, length, reserved names, etc.) — into the write buffer's error type. It occurs when an operation names a database whose name violates catalog naming rules.","triggerScenarios":"Writing to or creating a database with a name containing invalid characters (e.g. spaces, control chars), an empty name, a name that is too long, or otherwise rejected by DatabaseNameError validation.","commonSituations":"Client-supplied database names passed straight from a user request or config file without sanitization; URL-encoded or templated names containing stray characters; switching from another TSDB whose naming rules are more permissive.","solutions":["Validate the database name against influxdb3 naming rules before calling the write API","Trim/strip illegal characters from user- or config-supplied names","Inspect the inner DatabaseNameError for the exact rule violated"],"exampleFix":"// before\nwrite_lp(\"my db/2024\", lp)?; // invalid name\n// after\nlet db = \"my db/2024\".replace([' ', '/'], \"_\");\nvalidate_db_name(&db)?;\nwrite_lp(&db, lp)?;","handlingStrategy":"validation","validationCode":"fn valid_db_name(name: &str) -> bool {\n    !name.is_empty()\n        && name.len() <= 64\n        && name.chars().all(|c| c.is_ascii_alphanumeric() || c == '_' || c == '-')\n}\nassert!(valid_db_name(&db_name), \"invalid database name: {db_name}\");","typeGuard":"fn is_db_name_error(e: &WriteBufferError) -> Option<&DatabaseNameError> {\n    match e { WriteBufferError::DatabaseNameError(d) => Some(d), _ => None }\n}","tryCatchPattern":null,"preventionTips":["Sanitize user/config-supplied database names before writes","Centralize name generation in one validated helper","Document naming rules for client teams","Reject invalid names at the API edge with a clear 400 message"],"tags":["naming","validation","influxdb","rust"],"backgroundTag":"invalid-identifier-format","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"}