@Kle6800

Не запускается скрипт Go?

не запускается скрипт 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
  • Вопрос задан
  • 296 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы