{"record":{"id":"78beebf1242764fb","repo":"zylon-ai/private-gpt","slug":"database-query-dependencies-are-not-installed-ins-78beeb","errorCode":null,"errorMessage":"Database query dependencies are not installed. Install with one of: `uv sync --inexact --extra database-postgres` or `uv sync --inexact --extra database-mysql` or `uv sync --inexact --extra database-mssql` or `uv sync --inexact --extra database-db2` or `uv sync --inexact --extra database`.","messagePattern":"Database query dependencies are not installed\\. Install with one of: `uv sync --inexact --extra database-postgres` or `uv sync --inexact --extra database-mysql` or `uv sync --inexact --extra database-mssql` or `uv sync --inexact --extra database-db2` or `uv sync --inexact --extra database`\\.","errorType":"exception","errorClass":"ImportError","httpStatus":null,"severity":"error","filePath":"private_gpt/components/tools/builders/database_query_builder.py","lineNumber":60,"sourceCode":"        QueryResultType,\n    )\n\n\ndef _load_database_query_dependencies() -> tuple[\n    type[\"DatabaseQueryGenerator\"],\n    type[\"ErrorQueryResult\"],\n    type[\"QueryResult\"],\n    type[\"QueryResultType\"],\n]:\n    try:\n        from private_gpt.components.tabular.database_query_generator import (\n            DatabaseQueryGenerator,\n            ErrorQueryResult,\n            QueryResult,\n            QueryResultType,\n        )\n    except ImportError as e:\n        raise ImportError(\n            format_missing_dependency_message(\n                \"Database query\",\n                extras=(\n                    \"database-postgres\",\n                    \"database-mysql\",\n                    \"database-mssql\",\n                    \"database-db2\",\n                    \"database\",\n                ),\n            )\n        ) from e\n\n    return DatabaseQueryGenerator, ErrorQueryResult, QueryResult, QueryResultType\n\n\n@singleton\nclass DatabaseQueryToolBuilder:\n    \"\"\"A builder class for creating a database query tool.","sourceCodeStart":42,"sourceCodeEnd":78,"githubUrl":"https://github.com/zylon-ai/private-gpt/blob/4a030776a31a901ad80b1bf4d7faa2c1a367efbb/private_gpt/components/tools/builders/database_query_builder.py#L42-L78","documentation":"ImportError raised by _load_database_query_dependencies when private_gpt.components.tabular.database_query_generator cannot be imported. The database query tool's heavy dependencies (SQL drivers for postgres/mysql/mssql/db2) are optional extras, and the loader re-raises with a formatted message telling you which uv extra to install.","triggerScenarios":"Building or invoking the database query tool (database_query_builder) in an environment where none of the database-* optional extras were installed; the inner import of DatabaseQueryGenerator fails and is chained into this ImportError.","commonSituations":"Fresh install with only the base extras; CI image trimmed of optional deps; switching from a full 'database' extra install to a leaner environment; adding the database query tool to a deployment without updating the sync command.","solutions":["Install the matching extra for your engine: uv sync --inexact --extra database-postgres (or database-mysql / database-mssql / database-db2).","If you need multiple engines or are unsure, install the aggregate extra: uv sync --inexact --extra database.","Verify the import works afterwards: python -c \"from private_gpt.components.tabular.database_query_generator import DatabaseQueryGenerator\"."],"exampleFix":"# before\nuv sync --inexact\n\n# after\nuv sync --inexact --extra database-postgres","handlingStrategy":"type-guard","validationCode":"def database_query_available() -> bool:\n    try:\n        from private_gpt.components.tabular.database_query_generator import DatabaseQueryGenerator  # noqa: F401\n        return True\n    except ImportError:\n        return False\n\nif not database_query_available():\n    # skip registering the database query tool\n    pass","typeGuard":null,"tryCatchPattern":"try:\n    tool = build_database_query_tool(...)\nexcept ImportError as e:\n    logger.warning(\"database query tool unavailable: %s\", e)\n    # register toolset without database query","preventionTips":["Install the extra matching your engine at image build time: uv sync --inexact --extra database-postgres.","Gate tool registration on an availability probe so missing deps degrade gracefully.","Document which extras each deployment profile needs."],"tags":["dependencies","import-error","database","optional-extras"],"backgroundTag":null,"analyzedSha":"4a030776a31a901ad80b1bf4d7faa2c1a367efbb","analyzedAt":"2026-08-15T03:51:26.951Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}