2017-09-01 82 views
0

我有這樣的代碼segement命名查詢無法解析地圖

query := ` 
     SELECT 
      co_username as username, 
      co_password as password 
     FROM 
      servers.co 
     WHERE 
      co_url = concat('https://', :co_url) 
    ` 

    args := map[string]interface{}{ 
     "co_url": in.Url, 
    } 

    rows, err := collectorsConfig.Db.NamedQueryContext(ctx, query, args) 
    if err != nil { 
     msg := "Error getting co credentials for co '%s': %v" 
     log.Error.Printf(msg, in.Url, err) 
     return 
    } 

在運行過程中出現這個片段中,我得到這樣的錯誤:

錯誤獲取了合作「some.random合作憑據。 FQDN「:在地圖上找不到 名[字符串] {接口} { 」co_url「: 」some.random.fqdn「}

但如果我返工的片段是

in.Url = "https://" + in.Url 

query := ` 
      SELECT 
       co_username as username, 
       co_password as password 
      FROM 
       servers.co 
      WHERE 
       co_url = :co_url 
     ` 

一切正常。命名輸入是否與Concat函數不兼容?

回答

0

這將取決於你使用的是什麼sql庫,但在許多圖書館使用NamedQuery時,你必須逃脫任何其他冒號,您將找到如何在其文檔中做。例如,sqlx要求你用兩個冒號逃脫冒號。

co_url = concat('https:://', :co_url)