I have 4 columns that I need to get with Go. When I run query in MySQL I get all 4 columns but when I try to do it with Go i get only 3 columns. Go code is:
type song struct {
Id int
Artist string
Picture string
Name string
}
type data struct {
Songs []song
}
db, err := sql.Open(sqlServer, sqlData)
checkErr(err)
rows, err := db.Query("SELECT s.id, a.name a_name, al.picture, s.song_name FROM music_songs s JOIN music_albums al ON s.album_id = al.id JOIN music_artists a ON a.id = s.artist_id WHERE s.artist_id = ? ORDER BY s.id ASC, al.id ASC", ar)
checkErr(err)
var songs []song
for rows.Next() {
var id int
var artist string
var picture string
var name string
err = rows.Scan(&id, &artist, &picture, &name)
songs = append(songs, song{id, artist, picture, name})
}
fmt.Println(songs)
When I run it with Go I get columns: id, artist and picture. I can't get song_name column.
When I run it in MySQL I get:
+----+---------+---------+--------------------------+
| id | a_name | picture | song_name |
+----+---------+---------+--------------------------+
I dont know how and why, but this code is working:
type song struct {
Id int64
Artist string
Name string
Picture string
}
type data struct {
Songs []song
}
// Open database
db, err := sql.Open(sqlServer, sqlData)
checkErr(err)
rows, err := db.Query("SELECT s.id, s.song_name, a.name, al.picture as artistName FROM music_songs s JOIN music_albums al ON s.album_id = al.id JOIN music_artists a ON a.id = s.artist_id WHERE s.artist_id = ? ORDER BY s.id ASC, al.id ASC", ar)
checkErr(err)
var id int64
var songName string
var artistName string
var albumPicture string
var songs []song
for rows.Next() {
err = rows.Scan(&id, &songName, &artistName, &albumPicture)
songs = append(songs, song{id, songName, artistName, albumPicture})
}