27

I have searched the error and I have find two questions:

  • This one, but my question is not duplicate of it
  • And this one, but there is no answer in this question.

Here is my code:

package main

import (
    "log"

    "github.com/jmoiron/sqlx"

    _ "github.com/lib/pq"
)

var schema = `
CREATE TABLE films (
  code int,
  name VARCHAR(10)
)`

type Film struct {
    code int
    name string
}

func main() {
    db, err := sqlx.Open("postgres", "user=demas password=root host=192.168.99.100 port=32768 dbname=mydb sslmode=disable")
    if err != nil {
        log.Fatal(err)
    }

    db.MustExec(schema)

    tx := db.MustBegin()
    tx.MustExec("INSERT INTO films(code, name) VALUES($1, $2)", 10, "one")
    tx.MustExec("INSERT INTO films(code, name) VALUES($1, $2)", 20, "two")
    tx.Commit()

    films := []Film{}
    err = db.Select(&films, "SELECT * FROM public.films")
    if err != nil {
        log.Fatal(err)
    }

}

It creates table and insert 2 records, but can not return them back:

λ go run main.go
2016/09/26 14:46:04 non-struct dest type struct with >1 columns (2)
exit status 1

How can I fix it ?

1 Answer 1

65

It works if you export your fields:

type Film struct {
    Code int
    Name string
}

Notice the uppercase (Code, not code).

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.