{"record":{"id":"2fd199ca2e99c4c9","repo":"github/github-mcp-server","slug":"issue-field-q-is-missing-fulldatabaseid","errorCode":null,"errorMessage":"issue field %q is missing fullDatabaseId","messagePattern":"issue field %q is missing fullDatabaseId","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/github/issues.go","lineNumber":363,"sourceCode":"\t\tvar fullDatabaseIDStr, dataType string\n\t\tswitch string(node.TypeName) {\n\t\tcase \"IssueFieldText\":\n\t\t\tfullDatabaseIDStr = string(node.IssueFieldText.FullDatabaseID)\n\t\t\tdataType = string(node.IssueFieldText.DataType)\n\t\tcase \"IssueFieldNumber\":\n\t\t\tfullDatabaseIDStr = string(node.IssueFieldNumber.FullDatabaseID)\n\t\t\tdataType = string(node.IssueFieldNumber.DataType)\n\t\tcase \"IssueFieldDate\":\n\t\t\tfullDatabaseIDStr = string(node.IssueFieldDate.FullDatabaseID)\n\t\t\tdataType = string(node.IssueFieldDate.DataType)\n\t\tcase \"IssueFieldSingleSelect\":\n\t\t\tfullDatabaseIDStr = string(node.IssueFieldSingleSelect.FullDatabaseID)\n\t\t\tdataType = string(node.IssueFieldSingleSelect.DataType)\n\t\t}\n\n\t\tfieldID := parseFullDatabaseID(fullDatabaseIDStr)\n\t\tif fieldID == 0 {\n\t\t\treturn nil, nil, fmt.Errorf(\"issue field %q is missing fullDatabaseId\", fieldInput.FieldName)\n\t\t}\n\n\t\tif fieldInput.Delete {\n\t\t\tfieldIDsToDelete = append(fieldIDsToDelete, fieldID)\n\t\t\tcontinue\n\t\t}\n\n\t\tresolvedValue := fieldInput.Value\n\t\tif fieldInput.FieldOptionName != \"\" {\n\t\t\tif !strings.EqualFold(dataType, \"single_select\") {\n\t\t\t\treturn nil, nil, fmt.Errorf(\"issue field %q is %q, so field_option_name cannot be used\", fieldInput.FieldName, dataType)\n\t\t\t}\n\n\t\t\toptionFound := false\n\t\t\tfor _, option := range node.IssueFieldSingleSelect.Options {\n\t\t\t\tif strings.EqualFold(strings.TrimSpace(string(option.Name)), strings.TrimSpace(fieldInput.FieldOptionName)) {\n\t\t\t\t\t// REST API expects the option name, not the ID\n\t\t\t\t\tresolvedValue = string(option.Name)","sourceCodeStart":345,"sourceCodeEnd":381,"githubUrl":"https://github.com/github/github-mcp-server/blob/0ea1f775a7c73eff1bd2e25904d01136756bbfe2/pkg/github/issues.go#L345-L381","documentation":"resolveIssueRequestFieldValues (pkg/github/issues.go:363) extracts each field's FullDatabaseID from the GraphQL metadata and parses it with parseFullDatabaseID. If the ID string is empty or non-numeric, the parse returns 0 and this error fires. It signals an internal contract violation: the repository issue-fields metadata did not include the numeric database ID the REST write API requires.","triggerScenarios":"A preview/schema change where GitHub returns issue-field nodes without FullDatabaseID; parseFullDatabaseID receiving an ID like \"gid://git/IssueField/...\" or an empty string; server version out of date relative to the current preview shape.","commonSituations":"GitHub preview APIs evolving under the feature flag; stale github-mcp-server build after an upstream schema change; extremely rare on stable rollouts.","solutions":["Update github-mcp-server to the latest release — schema-drift fixes land quickly when previews change","Retry later — transient metadata inconsistencies during rollout usually resolve","Report upstream with the repository (no secret material) so maintainers can adjust the metadata query","As a workaround, set the field through the GitHub web UI or REST API directly"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":"func hasFullDatabaseID(raw string) bool {\n    if strings.TrimSpace(raw) == \"\" {\n        return false\n    }\n    id, err := strconv.ParseInt(raw, 10, 64)\n    return err == nil && id != 0\n}","tryCatchPattern":"resolved, toDelete, err := resolveIssueRequestFieldValues(ctx, gqlClient, owner, repo, fields)\nif err != nil {\n    if strings.Contains(err.Error(), \"missing fullDatabaseId\") {\n        // upstream metadata contract broken: not fixable client-side\n        log.Warn(\"schema drift in issue-fields metadata; update github-mcp-server\")\n        return err\n    }\n    return err\n}","preventionTips":["Pin a known-good github-mcp-server version and test upgrades against repos using issue fields","Watch release notes for issue-fields preview changes before bumping","Have a non-issue_fields fallback workflow (web UI / direct REST) for critical automations"],"tags":["go","graphql","issue-fields","schema-drift"],"backgroundTag":null,"analyzedSha":"0ea1f775a7c73eff1bd2e25904d01136756bbfe2","analyzedAt":"2026-08-15T18:10:19.804Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}