sql: ожидалось 1 аргумент, получено 2

# #sql #database #sqlite #go

Вопрос:

Я пытаюсь выполнить запросы здесь, но, похоже, не всегда работает с sql: ожидается 1 аргумент, получено 2 ошибки

     return func(c echo.Context) error {
        rows, err := db.Query("SELECT * FROM posts ORDER BY id DESC")
        if err != nil {
            panic(err)
        }

        defer rows.Close()

        result := PostCollection{}

        for rows.Next() {
            post := Post{}
            err2 := rows.Scan(amp;post.ID, amp;post.Fullname, amp;post.Content)
            if err2 != nil {
                panic(err2)
            }

            result.Posts = append(result.Posts, post)
        }

        return c.JSON(http.StatusOK, result)
    }
}
 

Комментарии:

1. Какова схема базы данных таблицы posts ? Имеет ли он только 3 столбца amp; в порядке: ID, Fullname, Content ?

2. @badman ошибка исходит не из кода, который вы показали, она исходит из какого-то другого кода бд. Вам нужно показать код, который на самом деле вызывает ошибку, иначе будет трудно дать определенный ответ.

3. @badman ошибка относится к несоответствующему количеству заполнителей параметров в строке запроса sql и количеству фактических параметров, переданных функции, выполняющей запрос. Например, вы можете получить эту ошибку , если у вас есть что-то вроде: db.Query("SELECT * FROM posts WHERE id=?", 123, 456) , вы можете видеть, что есть только один ? заполнитель, но два аргумента 123 и 456 . Такой код приведет к появлению указанного вами сообщения об ошибке.

Ответ №1:

если вам просто нужен идентификатор запроса, полное имя, облако содержимого, попробуйте это

 db.Query("SELECT ID, FullName, Content FROM posts ORDER BY id DESC")