не запускается скрипт go lang
можете подсказать
package main
import (
"fmt" ///пакет стандартной библиотеки Базовый пакет для форматирования функций ввода
"time" ///пакет для аботы со временем
"database/sql" ///пакет для работы с БД
_ "github.com/lib/pq" //пакет для работы с БД
)
////указываю постоянные значения подключения к БД и сокету FreeSWITCH
const (
DB_HOST = "127.0.0.1"
DB_USER = "postgres"
DB_PASSWORD = "postgres"
DB_NAME = "freeswitch"
)
////обьявляю глобальные переменные
var (
id int
client int
id_dispach int
db *sql.DB
)
func sql_req() {
rows, err := db.Query("SELECT client,id FROM dialer_golang WHERE state = 'called' ORDER BY RANDOM() LIMIT 1")
if err != nil {fmt.Println(err)}
defer rows.Close()
for rows.Next() {
rows.Scan(&client, &id) ///декодирую элементы которые хочу получить в БД
///короткая инициализация слайса Массива данных
data_call := []int{
client,
id,
}
fmt.Println("короткая обява слайса",data_call)
/////Делаю второй запрос к Базе Данных
dialer_rows , err := db.Query("SELECT id_dispatch FROM dialer_golang WHERE client = '$1' and state = 'called'",data_call[0])
if err != nil {fmt.Println(err)
return
}
defer dialer_rows.Close() ///закрываем коннект к Базе данных
for dialer_rows.Next() {
dialer_rows.Scan(&id_dispach)
}
}
}
func main() {
today := time.Now().Weekday()
fmt.Println(today)
time.Sleep(300 * time.Millisecond) ///команда задержки sleep
fmt.Println(today)
// подключение к Базе данных
db_property := "host=" + DB_HOST + " user=" + DB_USER + " password=" + DB_PASSWORD + " dbname=" + DB_NAME + " sslmode=disable"
db, err := sql.Open("postgres", db_property)
err = db.Ping()
if err != nil {fmt.Println("Error: IS NOT Connect for " + DB_NAME + " Host: " + DB_HOST)} else {fmt.Println("Database " + DB_NAME + " Host: " + DB_HOST + " Connect is GOOD")} ///проверка на ошибку если вернет ошибку то выведет то что коннекта к бд нет
defer db.Close() ///закрываем коннект к Базе данных
sql_req()
fmt.Println("ID Клиента",id,"Номер клиента",client)
fmt.Println("ID Client Dialer",id_dispach,client)
}
В консоли получаю такой вывод
[root@p441022 script]# go run planer.go
Thursday
Thursday
Database freeswitch Host: 127.0.0.1 Connect is GOOD
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x0 pc=0x4941b9]
goroutine 1 [running]:
panic(0x68d1e0, 0xc82000a110)
/usr/lib/golang/src/runtime/panic.go:481 +0x3e6
database/sql.(*DB).conn(0x0, 0x300000001, 0xc820000180, 0x0, 0x0)
/usr/lib/golang/src/database/sql/sql.go:778 +0xac9
database/sql.(*DB).query(0x0, 0x73b8a0, 0x55, 0x0, 0x0, 0x0, 0x40ef01, 0xc8200f5c68, 0x0, 0x0)
/usr/lib/golang/src/database/sql/sql.go:1073 +0x46
database/sql.(*DB).Query(0x0, 0x73b8a0, 0x55, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
/usr/lib/golang/src/database/sql/sql.go:1061 +0xa3
main.sql_req()
/root/script/planer.go:31 +0x85
main.main()
/root/script/planer.go:66 +0x3b9
exit status 2