데이터를 데이터베이스로 전송하려고합니다. 나는 클라이언트데이터를 데이터베이스로 전송하는 중 오류가 발생했습니다.
func handlePacket(conn net.Conn) {
rw := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn))
defer conn.Close()
packet := model.RegistrationMessage{}
client := JsonDecoderMessage(rw).Decode(&packet)
if client != nil {
puts("Error from Decode.Please NO :(")
}
if packet.MessageType == model.AUTH_MESSAGE {
puts("Auth")
} else if packet.MessageType == model.REGS_MESSAGE {
puts("Regs")
Registration(packet.Login, packet.Password)
puts("good")
}
}
에서 데이터를 기다릴 그리고 여기에는 DB와 I와 연결을 설정,이 함수에서 "잘못된 메모리 주소 또는 전무 포인터 역 참조 : 런타임 오류 공황" 는하지만 오류가 당신이 Registration
에 db
를 사용할 때 InitDataBase()
반환하므로,이 오류가 발생하면 실행됩니다 DB
var db *sql.DB
func InitDataBase() {
psqlInfo := fmt.Sprintf("host=%s port=%d user=%s "+
"password=%s dbname=%s sslmode=disable",
host, port, user, password, dbname)
db, err := sql.Open("postgres", psqlInfo)
if err != nil {
panic(err)
}
defer db.Close()
err = db.Ping()
if err != nil {
panic(err)
}
fmt.Println("Successfully connected!")
}
func Registration(email, password string) {
sqlStatement := `INSERT INTO account0(email,password)
VALUES ($1, $2) RETURNING id`
id := 0
err := db.QueryRow(sqlStatement, email, password).Scan(&id)
if err != nil {
panic(err)
}
}
주 기능에 defer db.Close()를 넣었습니다. –