{"record":{"id":"2d29aac99959356c","repo":"t8y2/dbx","slug":"cassandra-table-not-found-s-s","errorCode":null,"errorMessage":"Cassandra table not found: %s.%s","messagePattern":"Cassandra table not found: (.+?)\\.(.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"agents/drivers/cassandra-go/metadata.go","lineNumber":199,"sourceCode":"\t}\n\tmetadata, err := session.KeyspaceMetadata(schema)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif metadata == nil {\n\t\treturn nil, fmt.Errorf(\"Cassandra keyspace not found: %s\", schema)\n\t}\n\treturn metadata, nil\n}\n\nfunc (s *server) tableMetadata(schema, table string) (*gocql.TableMetadata, error) {\n\tkeyspace, err := s.keyspaceMetadata(schema)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tmetadata := keyspace.Tables[table]\n\tif metadata == nil {\n\t\treturn nil, fmt.Errorf(\"Cassandra table not found: %s.%s\", schema, table)\n\t}\n\treturn metadata, nil\n}\n\nfunc (s *server) listDatabases() ([]databaseInfo, error) {\n\tmetadata, err := s.allKeyspaceMetadata()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tnames := sortedMapKeys(metadata)\n\tresult := make([]databaseInfo, len(names))\n\tfor index, name := range names {\n\t\tresult[index] = databaseInfo{Name: name}\n\t}\n\treturn result, nil\n}\n\nfunc (s *server) listSchemas() ([]string, error) {","sourceCodeStart":181,"sourceCodeEnd":217,"githubUrl":"https://github.com/t8y2/dbx/blob/c0390bff16418b651f4728520d99adf8ce48829a/agents/drivers/cassandra-go/metadata.go#L181-L217","documentation":"While building a table's DDL, the driver computes the PRIMARY KEY from the metadata's PartitionKey. If the partition key list is empty, no valid Cassandra table definition can be produced, so buildTableDDL aborts with this error.","triggerScenarios":"Calling GetTableDDL (or buildTableDDL) on a table whose gocql TableMetadata has an empty PartitionKey — typically when schema metadata is stale, partially loaded, or the table is a exotic/unsupported object with no resolvable partition key columns.","commonSituations":"Stale schema metadata after concurrent DDL changes; gocql failing to resolve partition key columns from system_schema for unusual tables (e.g. dropped-in-progress or materialized-view internals); driver version incompatibility producing incomplete metadata.","solutions":["Refresh/reconnect so KeyspaceMetadata is re-fetched with complete partition key info","Check system_schema.columns for the table to confirm the partition key columns actually exist in the cluster","Upgrade or align the gocql/driver version if metadata parsing is known-buggy for your Cassandra version","Manually author the DDL if the table is a system/internal object the driver cannot model"],"exampleFix":"// before\nddl, err := srv.GetTableDDL(ctx, \"ks\", \"mv_internal\") // metadata has no PartitionKey\n// after\n// verify first:\n// SELECT column_name, kind FROM system_schema.columns WHERE keyspace_name='ks' AND table_name='mv_internal';\nddl, err := srv.GetTableDDL(ctx, \"ks\", \"base_table\")","handlingStrategy":"validation","validationCode":"meta, err := session.KeyspaceMetadata(ks)\nif err != nil || meta == nil { return err }\ntbl := meta.Tables[table]\nif tbl == nil || len(tbl.PartitionKey) == 0 {\n\treturn fmt.Errorf(\"table %s.%s has no partition key metadata\", ks, table)\n}","typeGuard":"func hasPartitionKey(tbl *gocql.TableMetadata) bool {\n\treturn tbl != nil && len(tbl.PartitionKey) > 0\n}","tryCatchPattern":"ddl, err := srv.GetTableDDL(ctx, ks, table)\nif err != nil {\n\tif strings.Contains(err.Error(), \"no partition key\") {\n\t\t// refresh metadata or hand-write DDL\n\t\treturn refreshMetadataAndRetry(ctx, ks, table)\n\t}\n\treturn err\n}","preventionTips":["Re-fetch keyspace metadata after DDL changes instead of caching stale TableMetadata","Skip system/internal tables when generating DDL","Confirm partition key columns exist in system_schema.columns for the table","Keep driver/gocql versions compatible with your Cassandra server version"],"tags":["cassandra","metadata","partition-key","ddl"],"backgroundTag":"missing-partition-key","analyzedSha":"c0390bff16418b651f4728520d99adf8ce48829a","analyzedAt":"2026-09-05T23:05:10.900Z","contentChangedAt":"2026-09-05T23:05:10.900Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}