{"record":{"id":"ff1a1cd6407cd2da","repo":"apache/cassandra","slug":"unknown-keyspace-keyspacename","errorCode":null,"errorMessage":"Unknown keyspace: '\" + keyspaceName + \"'","messagePattern":"Unknown keyspace: '\" \\+ keyspaceName \\+ \"'","errorType":"validation","errorClass":"InvalidRequestException","httpStatus":null,"severity":"error","filePath":"src/java/org/apache/cassandra/db/virtual/AbstractSchemaMetadataTable.java","lineNumber":219,"sourceCode":"                    addFieldRow(result, keyspace, udt, field.toString());\n            }\n        }\n        return result;\n    }\n\n    @Override\n    public DataSet data(DecoratedKey partitionKey)\n    {\n        SimpleDataSet result = new SimpleDataSet(metadata());\n\n        ByteBuffer key = partitionKey.getKey();\n        ByteBuffer[] components = ((CompositeType) metadata().partitionKeyType).split(key);\n        String objectType = UTF8Type.instance.compose(components[0]);\n        String keyspaceName = UTF8Type.instance.compose(components[1]);\n\n        KeyspaceMetadata keyspace = Schema.instance.getKeyspaceMetadata(keyspaceName);\n        if (keyspace == null)\n            throw new InvalidRequestException(\"Unknown keyspace: '\" + keyspaceName + '\\'');\n\n        ObjectType type = ObjectType.parse(objectType);\n        if (type == null)\n            throw new InvalidRequestException(\"Unknown object type: '\" + objectType +\n                                              \"'. Valid types are: \" + Arrays.toString(ObjectType.values()));\n\n        switch (type)\n        {\n            case KEYSPACE:\n                addKeyspaceRow(result, keyspace);\n                break;\n            case TABLE:\n                for (TableMetadata table : keyspace.tables)\n                    addTableRow(result, keyspace, table);\n                break;\n            case COLUMN:\n                for (TableMetadata table : keyspace.tables)\n                    for (ColumnMetadata column : table.columns())","sourceCodeStart":201,"sourceCodeEnd":237,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/db/virtual/AbstractSchemaMetadataTable.java#L201-L237","documentation":"AbstractSchemaMetadataTable (backing tables like system_schema_virtual / schema object listings) splits each partition key into (objectType, keyspaceName). If the keyspace named in the key does not exist in Schema, it throws InvalidRequestException, indicating a query against a nonexistent keyspace.","triggerScenarios":"SELECT from a schema-metadata virtual table with a partition key or WHERE clause naming a keyspace that was dropped or never created, e.g. `SELECT * FROM system_schema_virtual.tables WHERE keyspace_name = 'old_ks'`.","commonSituations":"Stale application config pointing at a dropped keyspace; case-sensitivity issues (quoted vs unquoted identifiers); race between DROP KEYSPACE and concurrent schema-table queries; tools enumerating keyspaces from cached metadata.","solutions":["Verify the keyspace exists: run `DESCRIBE KEYSPACES` or query system_schema.keyspaces before querying the metadata table","Fix identifier casing (keyspace names are case-sensitive when quoted)","Update application configuration to the current keyspace name","If hit after DROP KEYSPACE, re-read fresh schema metadata (clients may cache stale schema)."],"exampleFix":"// before\nSELECT * FROM system_schema_virtual.tables WHERE keyspace_name = 'old_ks';\n// after\nSELECT keyspace_name FROM system_schema.keyspaces; // confirm 'old_ks' exists first\n// then query only existing keyspaces","handlingStrategy":"validation","validationCode":"Row r = session.execute(\"SELECT keyspace_name FROM system_schema.keyspaces WHERE keyspace_name = ?\", ks).one();\nif (r == null) throw new IllegalArgumentException(\"Unknown keyspace: \" + ks);","typeGuard":null,"tryCatchPattern":"try { session.execute(schemaQuery); } catch (InvalidRequestException e) { if (e.getMessage().startsWith(\"Unknown keyspace\")) refreshSchemaAndFixConfig(); else throw e; }","preventionTips":["Confirm keyspaces exist before querying schema tables","Quote identifiers consistently to control casing","Refresh cluster schema metadata after DDL changes"],"tags":["cql","virtual-table","schema","keyspace","invalid-request"],"backgroundTag":"keyspace-not-found","analyzedSha":"88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1","analyzedAt":"2026-09-10T07:29:22.284Z","contentChangedAt":"2026-09-10T07:29:22.284Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}