{"record":{"id":"234ae487a859654a","repo":"cayleygraph/cayley","slug":"sql-query-failed-v-query-v","errorCode":null,"errorMessage":"sql query failed: %v\nquery: %v","messagePattern":"sql query failed: (.+?)\nquery: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"graph/sql/iterator.go","lineNumber":56,"sourceCode":"\tvals := make([]interface{}, 0, len(args))\n\tfor _, a := range args {\n\t\tvals = append(vals, a.SQLValue())\n\t}\n\tb := NewBuilder(qs.flavor.QueryDialect)\n\tqu := s.SQL(b)\n\treturn qu, vals\n}\n\nfunc (qs *QuadStore) QueryRow(ctx context.Context, s Shape) *sql.Row {\n\tqu, vals := qs.prepareQuery(s)\n\treturn qs.db.QueryRowContext(ctx, qu, vals...)\n}\n\nfunc (qs *QuadStore) Query(ctx context.Context, s Shape) (*sql.Rows, error) {\n\tqu, vals := qs.prepareQuery(s)\n\trows, err := qs.db.QueryContext(ctx, qu, vals...)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"sql query failed: %v\\nquery: %v\", err, qu)\n\t}\n\treturn rows, nil\n}\n\nfunc (qs *QuadStore) newIterator(s Select) *Iterator {\n\treturn &Iterator{\n\t\tqs:    qs,\n\t\tquery: s,\n\t}\n}\n\ntype Iterator struct {\n\tqs    *QuadStore\n\tquery Select\n\terr   error\n}\n\nfunc (it *Iterator) Iterate() iterator.Scanner {","sourceCodeStart":38,"sourceCodeEnd":74,"githubUrl":"https://github.com/cayleygraph/cayley/blob/81dcd7d73e45136bc0d01802a8ba4685d8a533eb/graph/sql/iterator.go#L38-L74","documentation":"Query wraps any error returned by database/sql's QueryContext with the message \"sql query failed: %v\\nquery: %v\", attaching the generated SQL. It indicates the SQL sent by the SQL quadstore was rejected by the database (syntax, missing table/column, connection, permissions, etc.).","triggerScenarios":"Calling Next/Contains on a SQL-backed iterator, which calls QuadStore.Query; the underlying db.QueryContext returns an error (bad SQL, missing table, dead connection, driver error).","commonSituations":"Connecting to a database where the schema tables don't exist (fresh DB, wrong database name); SQL flavor mismatch (MySQL query sent to Postgres); dropped connections or wrong credentials configured via the database address.","solutions":["Read the wrapped underlying error (%v) for the driver's root cause and the printed SQL.","Verify the database schema exists (run the store's Init/creation step) and the address points at the right database.","Confirm the correct SQL flavor for the backend when calling New/Init.","Check network/credentials and that the DB server is reachable."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"rows, err := qs.Query(ctx, shape)\nif err != nil {\n    log.Printf(\"sql query failed: %v\", err) // wrapped msg includes the SQL\n    return err\n}\ndefer rows.Close()","preventionTips":["Run the store's Init/creation step on fresh databases so tables exist.","Match the SQL flavor to the actual database engine.","Validate connectivity (ping) and credentials before issuing queries."],"tags":["sql","database","query"],"backgroundTag":"sql-query-failed","analyzedSha":"81dcd7d73e45136bc0d01802a8ba4685d8a533eb","analyzedAt":"2026-09-06T06:14:12.358Z","contentChangedAt":"2026-09-06T06:14:12.358Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}