我正在创建一个 crud 应用程序,并且正在使用内存数据库测试数据库。唯一中断的测试和函数是 toggleTask 函数和测试。功能:func (r *Repository) ToggleTask(task Task) (Task, error) { query := "UPDATE Tasks SET completed = NOT completed WHERE id = (?)" _, err := r.db.Exec(query, task.ID) if err != nil { return task, err } query = "SELECT id, txt, completed FROM Tasks WHERE id = (?) RETURNING *" err = r.db.QueryRow(query, task.ID).Scan(&task.ID, &task.Text, &task.ListID, &task.Completed) if err != nil { return task, err } return task, nil}测试:const ( ToggleTask = "SELECT id, txt, completed FROM Tasks WHERE id = (?) RETURNING *")func TestToggleTask(t *testing.T) { repo := mockDbRepo() list := List{Name: "Test List"} repo.db.Exec(CreateList, list.Name) task := Task{Text: "Test Task", ListID: list.ID} repo.db.Exec(CreateTask, task.Text, task.ListID) completedTask,err := repo.ToggleTask(task) if err != nil { t.Error(err) } if !reflect.DeepEqual(completedTask, task) { t.Errorf("Expected %v, got %v", task, completedTask) }}测试返回给我:SQL 逻辑错误:“RETURNING”附近:语法错误 (1)
1 回答

慕的地6264312
TA贡献1817条经验 获得超6个赞
您的 SQL 查询不正确。如 SQL Lite 文档中所述,SELECT
不接受RETURNING
子句。该SELECT
子句本身返回数据。在您的查询中删除您的RETURNING
条款,您应该会很好。
SQL Lite 参考: https: //www.sqlite.org/lang_select.html
- 1 回答
- 0 关注
- 351 浏览
添加回答
举报
0/150
提交
取消