与postgres服务器建立了连接,但拒绝从数据库"student"的表"students"获取数据


package main
import (
"database/sql"
"encoding/json"
"fmt"
"log"
"net/http"
"github.com/gorilla/mux"
_ "github.com/lib/pq"
)
func logFatal(err error) {
if err != nil {
log.Fatal(err)
}
}
const (
HOST     = "localhost"
PORT     = 5432
USER     = "Blablabla"
PASSWORD = ""
DBNAME   = "student"
)
type student struct {
ID          int    `json:"id"`
Name        string `json:"name"`
Department  string `json:"department"`
Year_Joined string `json:"year_joined"`
}
var students []student
var db *sql.DB
func main() {
psqlInfo := fmt.Sprintf("host=%s port=%d user=%s "+
"password=%s dbname=%s sslmode=disable",
HOST, PORT, USER, PASSWORD, DBNAME)
var err error
db, err = sql.Open("postgres", psqlInfo)
logFatal(err)
err = db.Ping()
if err != nil {
log.Fatal(err)
}
fmt.Println("Connected")
router := mux.NewRouter()
router.HandleFunc("/students", getStudents).Methods("GET")
log.Fatal(http.ListenAndServe(":8000", router))
}
func getStudents(w http.ResponseWriter, r *http.Request) {
var theStudent student
students = []student{}
rows, err := db.Query("select * from students")
if err != nil {
fmt.Print("there was an error", err)
}
for rows.Next() {
err := rows.Scan(&theStudent.ID, &theStudent.Name, &theStudent.Department, &theStudent.Year_Joined)
if err != nil {
log.Fatal(err)
}
students = append(students, theStudent)
}
json.NewEncoder(w).Encode(students)
}

这是数据库

Last login: Sat May 29 07:24:12 on ttys003
/Applications/Postgres.app/Contents/Versions/11/bin/psql -p5432 "student"
~   new-feature ●✚  /Applications/Postgres.app/Contents/Versions/11/bin/psql -p5432 "student"
psql (11.2)
Type "help" for help.
student=# select * from students;
id | name  | department | year_joined 
----+-------+------------+-------------
1 | ola   | csc        | 1990
2 | Kenny | math       | 2019
(2 rows)
student=# 

这是我从vscode终端得到的结果

Connected
there was an error pq: relation "students" does not exist<nil>`enter code here`

经过逐行调试,我意识到与数据库的连接是有效的,但问题出在postgresql语法上,该语法应该是"selectfrom table",而不是"select*from table"。这意味着它不支持select与((和(*(from之间的空格。感谢

相关内容

最新更新