2016-03-03 2 views
0

Я чувствую, что, должно быть, я совершенно не понимаю смысла. я пытаюсь запустить что-то вдоль линий на пример ниже, но ? не разлагается в переданном аргумент.golang mysql exec placeholder "?" не расширен

import (
    "database/sql" 
    _ "github.com/go-sql-driver/mysql" 
) 

db, err := sql.Open(...) 
if err != nil { ... } 
_, err = db.Query("SELECT * FROM foo WHERE bar=?", bar) 

Кроме того, кто концерн расширяет его? он показывает вверх в docdatabase/sql, но другие разговоры намекают, что это может быть проблемой для водителя.

Что мне не хватает? Любое указатель в правильном направлении приветствуется.

ответ

0

Вы, вероятно, не говорите ему, что используете драйвер mysql;

db, err := sql.Open("mysql", connString) 

Вот некоторые из моих примеров кода:

var query = "INSERT IGNORE INTO blah (`col1`, `col2`, `col3`) VALUES (?, ?, ?)" 

r, err := db.Query(query, some_data_1, some_data_2, some_data_3) 

// Failure when trying to store data 
if err != nil { 
    msg := fmt.Sprintf("fail : %s", err.Error()) 
    fmt.Println(msg) 

    return err 
} 

r.Close() // Always do this or you will leak connections 

создать пул MySQL (да, это бассейн НЕ соединение) с:

import (
    // mysql driver 
    _ "github.com/go-sql-driver/mysql" 

    "database/sql" 
    "fmt" 
) 

connString := fmt.Sprintf("%s:%[email protected](%s:%d)/%s?timeout=30s", 
    user, 
    password, 
    host, 
    port, 
    database, 
) 

db, err := sql.Open("mysql", connString) 

if err != nil { 
    return nil, err 
} 

err = db.Ping() // test the pool connection(s) 

if err != nil { 
    return nil, err 
} 

return db, nil // No error, return the pool connections 

I также настоятельно рекомендую вам распечатать любые ошибки в процессе подключения к базе данных и процесса запроса. Возможно, вы используете драйвер, но вам не хватает разрешений, база данных не работает и т. Д.

+1

Спасибо за ваши усилия jersten. Я был озадачен, должен ли он вообще работать, вы помогли решить эту двусмысленность, поэтому я принимаю ответ. Я не задал очень подробный вопрос, и, действительно, мой вопрос не содержал этой проблемы. Оказывается, я тоже хотел передать имя таблицы, которая, похоже, не поддерживается. Я собрал полный рабочий пример для ссылки на кого-либо. Еще раз спасибо! https://play.golang.org/p/VHTB2zddjl – zupa

Смежные вопросы