Как отследить SQL-запрос в postgresql - PullRequest
0 голосов
/ 13 ноября 2018
sql.Register("sqlWithHooks", sqlhooks.Wrap(r.Driver(), &Hooks{}))

// Connect to the registered wrapped driver
db, err := sql.Open("sqlWithHooks", ":memory:")
if err != nil {
    fmt.Println("error",err)

}

rows, err := db.Query("SELECT id,name,zone_z_id,dimension,price FROM   gift_box_z ")

if err != nil {
    fmt.Println("inside the error .........................",err)

}

После выполнения этого кода я получаю сообщение об ошибке "=" после ": memory:" в строке информации о соединении. Может кто-нибудь сказать мне, что не так с тем, что я здесь сделал?

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

sql.Open () ожидает 2 вещи: «driverName» и «dataSourceName».В случае примера sqlhooks они использовали sqlite в качестве базы данных.Кроме того, они использовали go-sqlite3 , и если вы присмотритесь к файлу sqlite3.go в строке № 886. Вы увидите datasourcename ': memory:', что означает, что мывыбирая в памяти использование sqlite дБ.

'dataSourceName' зависит от выбранной базы данных.В основном это означает строку подключения в формате имени источника данных.

Причина, по которой это сработало fmt.Sprintf ("хост =% s порт =% d пользователь =% s пароль =% s dbname =% s sslmode = отключить", хост, порт, пользователь, пароль, имя базы данных)

0 голосов
/ 13 ноября 2018

Второй аргумент sql.Open() ожидает строку подключения.Он имеет следующую форму:

fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s sslmode=disable",
            host, port, user, password, dbname)

Содержит необходимую информацию для открытия соединения с Postgres.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...