SQL逻辑错误: near "RETURNING": syntax error (1) Go

我正在创建一个 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)


阿波罗的战车
浏览 353回答 1
1回答

慕的地6264312

您的 SQL 查询不正确。如 SQL Lite 文档中所述,SELECT不接受RETURNING子句。该SELECT子句本身返回数据。在您的查询中删除您的RETURNING条款,您应该会很好。SQL Lite 参考: https: //www.sqlite.org/lang_select.html
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go