Форум программистов, компьютерный форум, киберфорум
Go (Golang)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 12.10.2019
Сообщений: 4

Ошибка 'invalid memory address or nil pointer dereference'

06.10.2020, 21:34. Показов 3365. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь подключиться к базе данных, но постоянно получаю ошибку, указанную в заголовке. Создал отдельный файл для проверки все работает. Насколько, я понял, ошибка возникает потому, что в переменной db возникает пустое значение, поэтому я использовал "=" вместо ":=", но все равно не помогло.
Код программы:
Кликните здесь для просмотра всего текста

Go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package main
 
import (
    "database/sql"
    "fmt"
    "log"
    "math/rand"
    "net/http"
 
    "github.com/gorilla/mux"
    _ "github.com/lib/pq"
)
 
type address struct {
    realAddress  string
    shortAddress string
}
 
var db *sql.DB
 
var templ = []byte(`
<html>
    <head>
        <title> UrlShortener on Go  </title>
    </head>
        <body>
            <style>
                h2 { margin: 10px 0;
                    text-align: center; }
                h1 { margin: 10px 0; 
                    text-align: center }
            </style>
        <h1 text-align='center'> <font color = 'red'> Привет всем! </font> </h1>
        <h2> <font color = 'green'> StartPage </font></h2>
    </body>
</html>
`)
 
func shortCreate(s string) string {
    const chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" +
        "1234567890"
    b := make([]byte, 7)
    for i := range b {
        b[i] = chars[rand.Intn(len(chars))]
    }
    return string(b)
}
 
func dbinit() {
    dbConf := "user=postgres password= 1shawty2 dbname=postgres sslmode=disable"
    var err error
    db, err = sql.Open("postgres", dbConf)
    if err != nil {
        fmt.Println("Error happened")
        panic(err)
    }
    if err = db.Ping(); err != nil {
        log.Fatal(err)
    }
}
 
func main() {
 
    router := mux.NewRouter()
 
    router.HandleFunc("/", mainPageHandler)
 
    router.HandleFunc("/datafetch", dbHandler)
 
    fmt.Println("Server starting on port 9000")
 
    http.ListenAndServe(":9000", router)
}
 
func dbHandler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Open connections: %d\n", db.Stats().OpenConnections)
}
 
func mainPageHandler(w http.ResponseWriter, r *http.Request) {
    w.Write(templ)
    return
}

Ошибка:
Кликните здесь для просмотра всего текста

2020/10/06 21:24:38 http: panic serving [::1]:61807: runtime error: invalid memory address or nil pointer dereference
goroutine 20 [running]:
net/http.(*conn).serve.func1(0xc00008d040)
c:/go/src/net/http/server.go:1801 +0x147
panic(0xef31a0, 0x1119870)
c:/go/src/runtime/panic.go:975 +0x3e9
database/sql.(*DB).Stats(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
c:/go/src/database/sql/sql.go:1081 +0x6c
main.dbHandler(0xf9d5a0, 0xc000054000, 0xc00005c100)
C:/Users/Константин/go/src/ShortenerAPI/main.go:76 +0x46
net/http.HandlerFunc.ServeHTTP(0xf56528, 0xf9d5a0, 0xc000054000, 0xc00005c100)
c:/go/src/net/http/server.go:2042 +0x4b
github.com/gorilla/mux.(*Router).ServeHTTP(0xc00011c000, 0xf9d5a0, 0xc000054000, 0xc000134100)
C:/Users/Константин/go/src/github.com/gorilla/mux/mux.go:210 +0xe5
net/http.serverHandler.ServeHTTP(0xc00012200 0, 0xf9d5a0, 0xc000054000, 0xc000134100)
c:/go/src/net/http/server.go:2843 +0xaa
net/http.(*conn).serve(0xc00008d040, 0xf9db20, 0xc0000e2480)
c:/go/src/net/http/server.go:1925 +0x8ad
created by net/http.(*Server).Serve
c:/go/src/net/http/server.go:2969 +0x36d
2020/10/06 21:24:38 http: panic serving [::1]:61806: runtime error: invalid memory address or nil pointer dereference
goroutine 19 [running]:
net/http.(*conn).serve.func1(0xc00008cfa0)
c:/go/src/net/http/server.go:1801 +0x147
panic(0xef31a0, 0x1119870)
c:/go/src/runtime/panic.go:975 +0x3e9
database/sql.(*DB).Stats(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
c:/go/src/database/sql/sql.go:1081 +0x6c
main.dbHandler(0xf9d5a0, 0xc0000540e0, 0xc00005c400)
C:/Users/Константин/go/src/ShortenerAPI/main.go:76 +0x46
net/http.HandlerFunc.ServeHTTP(0xf56528, 0xf9d5a0, 0xc0000540e0, 0xc00005c400)
c:/go/src/net/http/server.go:2042 +0x4b
github.com/gorilla/mux.(*Router).ServeHTTP(0xc00011c000, 0xf9d5a0, 0xc0000540e0, 0xc000134000)
C:/Users/Константин/go/src/github.com/gorilla/mux/mux.go:210 +0xe5
net/http.serverHandler.ServeHTTP(0xc00012200 0, 0xf9d5a0, 0xc0000540e0, 0xc000134000)
c:/go/src/net/http/server.go:2843 +0xaa
net/http.(*conn).serve(0xc00008cfa0, 0xf9db20, 0xc0000e23c0)
c:/go/src/net/http/server.go:1925 +0x8ad
created by net/http.(*Server).Serve
c:/go/src/net/http/server.go:2969 +0x36d
2020/10/06 21:24:38 http: panic serving [::1]:61808: runtime error: invalid memory address or nil pointer dereference
goroutine 21 [running]:
net/http.(*conn).serve.func1(0xc00008d0e0)
c:/go/src/net/http/server.go:1801 +0x147
panic(0xef31a0, 0x1119870)
c:/go/src/runtime/panic.go:975 +0x3e9
database/sql.(*DB).Stats(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
c:/go/src/database/sql/sql.go:1081 +0x6c
main.dbHandler(0xf9d5a0, 0xc00021c000, 0xc00022a100)
C:/Users/Константин/go/src/ShortenerAPI/main.go:76 +0x46
net/http.HandlerFunc.ServeHTTP(0xf56528, 0xf9d5a0, 0xc00021c000, 0xc00022a100)
c:/go/src/net/http/server.go:2042 +0x4b
github.com/gorilla/mux.(*Router).ServeHTTP(0xc00011c000, 0xf9d5a0, 0xc00021c000, 0xc00005c500)
C:/Users/Константин/go/src/github.com/gorilla/mux/mux.go:210 +0xe5
net/http.serverHandler.ServeHTTP(0xc00012200 0, 0xf9d5a0, 0xc00021c000, 0xc00005c500)
c:/go/src/net/http/server.go:2843 +0xaa
net/http.(*conn).serve(0xc00008d0e0, 0xf9db20, 0xc0000441c0)
c:/go/src/net/http/server.go:1925 +0x8ad
created by net/http.(*Server).Serve
c:/go/src/net/http/server.go:2969 +0x36d
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.10.2020, 21:34
Ответы с готовыми решениями:

Ошибка invalid pointer
Приветствую всех! Сделал задание для универа, все компилилось и выполнялось так, как надо. Сижу с linux(в qt creator). Но после того, как...

Ошибка: Invalid pointer
PStack = ^TStack; TStack = Record Data : Integer; Next : PStack; end; procedure push(var st : PStack;...

Ошибка: Invalid pointer operation
Создаю проект. Самый обычный. 2 формы, текст, пару кнопок. И ни с того, ни с сего ошибка &quot;invalid pointer operation&quot;. ...

1
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,779
06.10.2020, 22:51
Лучший ответ Сообщение было отмечено astraker как решение

Решение

astraker, а функцию dbinit ты где вызываешь?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.10.2020, 22:51
Помогаю со студенческими работами здесь

Ошибка: Invalid pointer exception
Столкнулся с наипротивнейшим экскепшеном invalid pointer.Функция нормально работает но бяка выползнает.И самое главное что еще и...

Ошибка 'invalid pointer operation'
Я создал прогу которая делает скриншот экрана и передает её к клиенту. И у меня возникли такие проблемы во время работы у меня выходит...

Ошибка Invalid pointer operation
Type TICQContact = record uin: string; pwd: string; end; var Form2: TForm2; contacts: array of...

Ошибка: Invalid pointer operation
Вот код в OnCreate: if not (label2.Caption='') and (label1.Caption='') then label2.Caption:=label1.Caption; ...

Ошибка в программе - Invalid Pointer
Привет, помогите пожалуйста, в чем причина не пойму, мозг уже взрывается..%-) unit Unit1; interface uses Windows, Messages,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru