【问题标题】:How to connect to mssql database in linux with GO如何使用 GO 连接到 linux 中的 mssql 数据库
【发布时间】:2017-06-29 22:24:44
【问题描述】:

我已经使用this 教程在 linux 上创建并连接了一个 sql server。

我正在使用 golang 和 this 驱动程序。 (https://github.com/denisenkom/go-mssqldb)

我在使用 golang 连接到数据库时遇到问题。我已将用户指定为 SA 和密码。我还在终端“主机名”中写入并获得了主机名xxx。当我使用该信息进行连接时,我收到 500 错误。

conn, err := sql.Open("mssql", "server=xxx; id=SA; password=mypass; database=testdb)

这看起来正确吗?我是新手,所以也许我遗漏了一些明显的东西?

【问题讨论】:

  • 你至少可以从 sqlcmd 连接吗?
  • @TheGameiswar 是的,我是
  • 你能显示错误日志的内容吗? cat /var/opt/mssql/log/errorlog 如果连接成功,您可能会在那里看到一个条目。
  • 我猜 500 错误意味着数据库访问发生在 http 处理程序内部。这意味着您的处理程序的代码实际上是恐慌的。从恐慌中恢复并记录截获的错误。它很可能会告诉您问题所在。

标签: sql sql-server linux go


【解决方案1】:

Github example 你可以看到它是如何工作的。 您可以按照以下步骤操作:

var (
    server    string = "localhost" // for example
    user      string = "userdb"    // Database user
    password  string = "userpwd"   // User Password
    port      int    = 1433        // Database port
)

connString := fmt.Sprintf("server=%s;user id=%s;password=%s;port=%d", server, user, password, port)
conn, err := sql.Open("mssql", connString)

// Test if the connection is OK or not
if err != nil {
    panic("Cannot connect to database")
} else {
    fmt.Println("Connected!")

  }
// Don't forget to close the connection to your database
defer conn.Close()

【讨论】:

    【解决方案2】:
    import "database/sql"
    import _ "github.com/go-sql-driver/mysql"
    
    db, err := sql.Open("mysql", "user:password@/dbname")
    

    就这么简单,您可以连接到您的数据库 您应该在代码中添加驱动程序作为未使用的包,然后它具有参数 URI 以连接到 DB。 你可以像这个链接一样查询 https://golang.org/pkg/database/sql/#example_DB_Query

    【讨论】:

      【解决方案3】:

      如果您在创建连接字符串时遇到问题,那么您可以随时让您的库为您格式化连接字符串。

      import (
          "database/sql"
          _ "github.com/go-sql-driver/mysql"
          // OTHER STUFF
      )
      
      func main() {
          cfg := mysql.Config{
              User:   "username",
              Passwd: "password",
              Net:    "tcp",
              Addr:   "127.0.0.1:3306",
              DBName: "database_name",
          }
      
          db, err := sql.Open("mysql", cfg.FormatDSN())
          check(err)
      
          // DO SOMETHING WITH db
      }
      
      func check(e error) {
          if e != nil {
              panic(e)
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-26
        • 2013-09-16
        • 2012-10-15
        • 1970-01-01
        • 2017-02-08
        • 2023-04-07
        相关资源
        最近更新 更多