{"record":{"id":"88212fddeb70e47b","repo":"louislam/uptime-kuma","slug":"multiple-columns-were-found-expected-only-one-val","errorCode":null,"errorMessage":"Multiple columns were found, expected only one value","messagePattern":"Multiple columns were found, expected only one value","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"server/monitor-types/mssql.js","lineNumber":117,"sourceCode":"            await pool.connect();\n            const result = await pool.request().query(query);\n\n            // Check if we have results\n            if (!result.recordset || result.recordset.length === 0) {\n                throw new Error(\"Query returned no results\");\n            }\n\n            // Check if we have multiple rows\n            if (result.recordset.length > 1) {\n                throw new Error(\"Multiple values were found, expected only one value\");\n            }\n\n            const firstRow = result.recordset[0];\n            const columnNames = Object.keys(firstRow);\n\n            // Check if we have multiple columns\n            if (columnNames.length > 1) {\n                throw new Error(\"Multiple columns were found, expected only one value\");\n            }\n\n            // Return the single value from the first (and only) column\n            return firstRow[columnNames[0]];\n        } catch (err) {\n            log.debug(\"sqlserver\", \"Error caught in the query execution.\", err.message);\n            throw err;\n        } finally {\n            if (pool) {\n                await pool.close();\n            }\n        }\n    }\n}\n\nmodule.exports = {\n    MssqlMonitorType,\n};","sourceCodeStart":99,"sourceCodeEnd":135,"githubUrl":"https://github.com/louislam/uptime-kuma/blob/6b5ea0155793e666666745fb8d6fef1e829543a2/server/monitor-types/mssql.js#L99-L135","documentation":"Thrown by mssqlQuerySingleValue when the first row exposes more than one column. The single-value path requires a 1-row x 1-column result so the condition evaluator receives an unambiguous scalar.","triggerScenarios":"monitor.conditions non-empty, exactly one row returned, but Object.keys(firstRow).length > 1. Happens with SELECT *, multi-column projections, or queries that include computed/identity columns.","commonSituations":"SELECT * used for convenience; query selects id plus the value column; a view returns extra metadata columns.","solutions":["Project exactly one column: SELECT <col> FROM ....","If you need several fields, aggregate them into one expression (CONCAT, JSON, computed column).","Drop unused columns from the SELECT list."],"exampleFix":"-- before: SELECT id, balance FROM accounts WHERE id=@id;\n-- after:  SELECT balance FROM accounts WHERE id=@id;","handlingStrategy":"validation","validationCode":"function columnCountOfFirstRow(r) { return r?.recordset?.[0] ? Object.keys(r.recordset[0]).length : 0; }","typeGuard":"function isSingleColumn(r) { return r?.recordset?.length>=1 && Object.keys(r.recordset[0]).length === 1; }","tryCatchPattern":null,"preventionTips":["Project exactly one column; never SELECT * with conditions enabled.","Combine multiple fields into one expression (CONCAT/FOR JSON) if you need several."],"tags":["mssql","sqlserver","sql","multiple-columns","uptime-kuma"],"backgroundTag":null,"analyzedSha":"6b5ea0155793e666666745fb8d6fef1e829543a2","analyzedAt":"2026-08-12T23:42:12.959Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}