{"record":{"id":"63be2cf6f78b47dd","repo":"iflytek/astron-agent","slug":"unsupported-db-type-db-type-supported-types-postgresql-mysql","errorCode":null,"errorMessage":"Unsupported DB_TYPE: '{db_type}'. Supported types: postgresql, mysql","messagePattern":"Unsupported DB_TYPE: '(.+?)'\\. Supported types: postgresql, mysql","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"core/memory/database/repository/middleware/adapters/registry.py","lineNumber":40,"sourceCode":"    if _adapter_instance is not None:\n        return _adapter_instance\n\n    db_type = os.getenv(\"DB_TYPE\", \"postgresql\").lower()\n\n    if db_type == \"postgresql\":\n        from memory.database.repository.middleware.adapters.postgresql_adapter import (\n            PostgreSQLAdapter,\n        )\n\n        _adapter_instance = PostgreSQLAdapter()\n    elif db_type == \"mysql\":\n        from memory.database.repository.middleware.adapters.mysql_adapter import (\n            MySQLAdapter,\n        )\n\n        _adapter_instance = MySQLAdapter()\n    else:\n        raise ValueError(\n            f\"Unsupported DB_TYPE: '{db_type}'. Supported types: postgresql, mysql\"\n        )\n\n    return _adapter_instance\n\n\ndef reset_adapter() -> None:\n    \"\"\"Reset the cached adapter instance. Useful for testing.\"\"\"\n    global _adapter_instance  # noqa: PLW0603\n    _adapter_instance = None\n","sourceCodeStart":22,"sourceCodeEnd":51,"githubUrl":"https://github.com/iflytek/astron-agent/blob/5e758547a83371a5a4b29dadf4ac03e8dd527635/core/memory/database/repository/middleware/adapters/registry.py#L22-L51","documentation":"The adapter registry maps DB_TYPE values to dialect adapters. Only postgresql and mysql have adapters; any other value raises ValueError listing the supported types. This fails fast before any DDL/DML translation is attempted.","triggerScenarios":"get_adapter() called with db_type from env/config set to something like 'postgres', 'pg', 'oracle', 'sqlite', or an unset/uppercase variant not matching the exact expected strings.","commonSituations":"Environment variable DB_TYPE typo'd or using a common alias ('postgres' instead of 'postgresql'); new database type deployed without adding an adapter.","solutions":["Set DB_TYPE exactly to 'postgresql' or 'mysql' (check env var, config file, or request payload)","Normalize/validate the value at config load time before reaching the registry","If a new DB is genuinely needed, implement an Adapter class and register it in registry.py"],"exampleFix":"// before\nDB_TYPE=postgres\n// after\nDB_TYPE=postgresql","handlingStrategy":"validation","validationCode":"SUPPORTED = {'postgresql', 'mysql'}\nif db_type not in SUPPORTED:\n    raise ValueError(f'DB_TYPE must be one of {SUPPORTED}, got {db_type!r}')","typeGuard":null,"tryCatchPattern":"try:\n    adapter = get_adapter(db_type)\nexcept ValueError as e:\n    logger.error('bad DB_TYPE: %s', e)\n    adapter = get_adapter('postgresql')  # or fail fast per policy","preventionTips":["Use exact canonical values 'postgresql'/'mysql' in env/config","Normalize and validate DB_TYPE once at config load","Add aliases (pg->postgresql) at ingestion if needed"],"tags":["config","database","adapter-registry"],"backgroundTag":"invalid-enum-value","analyzedSha":"5e758547a83371a5a4b29dadf4ac03e8dd527635","analyzedAt":"2026-09-12T08:03:51.356Z","contentChangedAt":"2026-09-12T08:03:51.356Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}