{"record":{"id":"5e7f5a6f87e8c02d","repo":"plandex-ai/plandex","slug":"error-getting-org-owner-role-id-v","errorCode":null,"errorMessage":"error getting org owner role id: %v","messagePattern":"error getting org owner role id: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"app/server/db/org_helpers.go","lineNumber":118,"sourceCode":"\t\tAutoAddDomainUsers: req.AutoAddDomainUsers,\n\t\tOwnerId:            userId,\n\t}\n\n\terr := tx.QueryRow(\"INSERT INTO orgs (name, domain, auto_add_domain_users, owner_id, is_trial) VALUES ($1, $2, $3, $4, false) RETURNING id\", req.Name, domain, req.AutoAddDomainUsers, userId).Scan(&org.Id)\n\n\tif err != nil {\n\t\tif IsNonUniqueErr(err) {\n\t\t\t// Handle the uniqueness constraint violation\n\t\t\treturn nil, fmt.Errorf(\"an org with domain %s already exists\", *domain)\n\n\t\t}\n\n\t\treturn nil, fmt.Errorf(\"error creating org: %v\", err)\n\t}\n\n\torgOwnerRoleId, err := GetOrgOwnerRoleId()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error getting org owner role id: %v\", err)\n\t}\n\n\t_, err = tx.Exec(\"INSERT INTO orgs_users (org_id, user_id, org_role_id) VALUES ($1, $2, $3)\", org.Id, userId, orgOwnerRoleId)\n\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error adding org membership: %v\", err)\n\t}\n\n\treturn org, nil\n}\n\nfunc GetOrgForDomain(domain string) (*Org, error) {\n\tvar org Org\n\tquery := fmt.Sprintf(\"SELECT %s FROM orgs WHERE domain = $1\", orgFields)\n\terr := Conn.Get(&org, query, domain)\n\n\tif err != nil {\n\t\tif err == sql.ErrNoRows {","sourceCodeStart":100,"sourceCodeEnd":136,"githubUrl":"https://github.com/plandex-ai/plandex/blob/e2d772072efadbe41d2946d97d79be55532dbab5/app/server/db/org_helpers.go#L100-L136","documentation":"CreateOrg wraps a failure from GetOrgOwnerRoleId() into 'error getting org owner role id: %v'. The owner role row (in the roles/org_roles table) could not be read, so the owner membership row cannot be created.","triggerScenarios":"GetOrgOwnerRoleId returns sql.ErrNoRows because the org owner role seed row is missing, or the SELECT against the roles table fails due to connectivity or missing table.","commonSituations":"Fresh database where role-seed migrations never ran; migrations partially applied dropping/rename the roles table; DB outage mid-request.","solutions":["Run/verify the seed migrations that insert the org owner role row","Inspect GetOrgOwnerRoleId: log whether it returned sql.ErrNoRows (missing row) vs a connection error","Query the roles table manually to confirm the owner role exists and its id","Re-seed role data and retry org creation"],"exampleFix":"// before\norgOwnerRoleId, err := db.GetOrgOwnerRoleId()\nif err != nil { return nil, err }\n// after (seed check at startup)\nif _, err := db.GetOrgOwnerRoleId(); err != nil {\n    log.Fatalf(\"org roles missing — run migrations/seeds: %v\", err)\n}","handlingStrategy":"retry","validationCode":"// Verify seed data at startup\nif _, err := db.GetOrgOwnerRoleId(); err != nil {\n    log.Fatalf(\"org owner role missing: %v\", err)\n}","typeGuard":null,"tryCatchPattern":"org, err := db.CreateOrg(req, userId, &domain, tx)\nif err != nil && strings.Contains(err.Error(), \"owner role id\") {\n    return fmt.Errorf(\"server misconfiguration: role seeds missing; run migrations\")\n}","preventionTips":["Run seed migrations as part of every deploy/startup","Fail fast at boot if role lookups fail","Add a healthcheck endpoint that fetches both owner and member role ids","Version-control seed data alongside schema migrations"],"tags":["database","missing-seed-data","roles"],"backgroundTag":"missing-seed-data","analyzedSha":"e2d772072efadbe41d2946d97d79be55532dbab5","analyzedAt":"2026-09-05T20:56:53.631Z","contentChangedAt":"2026-09-05T20:56:53.631Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}