{"record":{"id":"8bb863ced8de9788","repo":"apache/cassandra","slug":"keyspace-s-does-not-exist","errorCode":null,"errorMessage":"keyspace %s does not exist","messagePattern":"keyspace (.+?) does not exist","errorType":"validation","errorClass":"KeyspaceNotDefinedException","httpStatus":null,"severity":"error","filePath":"src/java/org/apache/cassandra/schema/SchemaProvider.java","lineNumber":102,"sourceCode":"    {\n        assert keyspaceName != null;\n        KeyspaceMetadata ksm = distributedKeyspaces().getNullable(keyspaceName);\n        return (ksm == null) ? null : ksm.views.getNullable(viewName);\n    }\n\n    default Keyspaces getNonLocalStrategyKeyspaces()\n    {\n        return distributedKeyspaces().filter(keyspace -> keyspace.params.replication.klass != LocalStrategy.class);\n    }\n\n    default TableMetadata validateTable(String keyspaceName, String tableName)\n    {\n        if (tableName.isEmpty())\n            throw new InvalidRequestException(\"non-empty table is required\");\n\n        KeyspaceMetadata keyspace = getKeyspaceMetadata(keyspaceName);\n        if (keyspace == null)\n            throw new KeyspaceNotDefinedException(String.format(\"keyspace %s does not exist\", keyspaceName));\n\n        TableMetadata metadata = keyspace.getTableOrViewNullable(tableName);\n        if (metadata == null)\n            throw new InvalidRequestException(String.format(\"table %s does not exist\", tableName));\n\n        return metadata;\n    }\n\n    default ColumnFamilyStore getColumnFamilyStoreInstance(TableId id)\n    {\n        TableMetadata metadata = getTableMetadata(id);\n        if (metadata == null)\n            return null;\n\n        Keyspace instance = getKeyspaceInstance(metadata.keyspace);\n        if (instance == null)\n            return null;\n","sourceCodeStart":84,"sourceCodeEnd":120,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/schema/SchemaProvider.java#L84-L120","documentation":"validateTable throws KeyspaceNotDefinedException (a subclass of InvalidRequestException) when the requested keyspace does not exist in the current schema. This happens before any table lookup, so a nonexistent keyspace is reported independently of the table name.","triggerScenarios":"Issuing SELECT/DML/DDL against a keyspace that was never created or was dropped; omitting a keyspace qualifier with no USE keyspace set so an empty/default keyspace name is looked up; typo in the keyspace name.","commonSituations":"Case-sensitivity mistakes (unquoted identifiers lowercased), keyspace only existing in another cluster/DC, migrations run before keyspace creation, cqlsh sessions without USE.","solutions":["Create the keyspace (CREATE KEYSPACE ...) or qualify the statement with an existing keyspace.","Check the exact name in system_schema.keyspaces; unquoted names are lowercased.","Add existence checks / IF NOT EXISTS handling in migration scripts before touching tables."],"exampleFix":"// before\nsession.execute(\"SELECT * FROM user_events.events WHERE id = 1\"); // keyspace user_events missing\n// after\nsession.execute(\"CREATE KEYSPACE IF NOT EXISTS user_events WITH replication = {'class':'SimpleStrategy','replication_factor':1}\");\nsession.execute(\"SELECT * FROM user_events.events WHERE id = 1\");","handlingStrategy":"validation","validationCode":"boolean keyspaceExists(Session s, String ks) {\n    return s.execute(\"SELECT keyspace_name FROM system_schema.keyspaces WHERE keyspace_name = ?\", ks.toLowerCase()).one() != null;\n}","typeGuard":null,"tryCatchPattern":"try { session.execute(query); }\ncatch (KeyspaceNotDefinedException e) {\n    logger.error(\"Keyspace {} missing — run keyspace bootstrap first\", ks);\n    throw e;\n}","preventionTips":["Qualify all table references with the keyspace name; avoid relying on USE.","Remember unquoted identifiers are lowercased — use consistent casing.","Ensure migration scripts create keyspaces before tables."],"tags":["schema","keyspace","not-found"],"backgroundTag":"resource-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"}