centos6.4下用golang连接mssql

ijibu · · 2336 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

背景描述:公司数据库用mssql,web服务器又打算迁移到linux,发现真是悲剧啊,到处是地雷。进入正题

1.安装ODBC

Install:
	yum install unixODBC unixODBC-devel

安装成功后,会生成两个配置文件,/etc/odbcinst.ini,/etc/odbc.ini;这两个配置文件稍后会用到。在linux安装ODBC后,其实已经默认安装了PostgreSQL,mysql的驱动,此时查看/etc/odbcinst.ini的内容便知,所以下面还得单独安装SQL Server驱动。


2.安装Microsoft ODBC Driver 11 for SQL Server

认真阅读微软官方的安装文档照着安装,否则很多地雷:
http://technet.microsoft.com/zh-cn/library/hh568451.aspx
http://technet.microsoft.com/zh-cn/library/hh568454.aspx
官方下载包中有两个sh文件:build_dm.sh,install.sh。按照sh文件的提示进行安装即可。
Install:
	wget http://download.microsoft.com/download/B/C/D/BCDD264C-7517-4B7D-8159-C99FC5535680/RedHat6/msodbcsql-11.0.2270.0.tar.gz
	tar xvf msodbcsql-11.0.2270.0.tar.gz	
	cd msodbcsql-11.0.2270.0
	./build_dm.sh
	//build_dm.sh会下载依赖包,然后会出现如下提示叫你安装相应的依赖。
	//Run the command 'cd /tmp/unixODBC.4745.28125.26522/unixODBC-2.3.0; make install' to install the driver manager.
	./install.sh verify	//验证安装条件是否满足,主要是检查依赖是否解决。
	./install.sh install
安装成功后,查看文件/etc/odbcinst.ini,发现新增了如下内容:
[ODBC Driver 11 for SQL Server]
	Description=Microsoft ODBC Driver 11 for SQL Server
	Driver=/opt/microsoft/msodbcsql/lib64/libmsodbcsql-11.0.so.2270.0
	Threading=1
	UsageCount=1
证明SQL Server Driver安装成功了。

3.配置DSN

参考文档:http://www.easysoft.com/products/data_access/odbc-sql-server-driver/getting-started.html#data-source
vi /etc/odbc.ini添加如下代码:
[SQLSERVER_SAMPLE]
	Driver          = ODBC Driver 11 for SQL Server
	Description     = ODBC Driver 11 for SQL Server
	Server          = 192.168.1.1
	Port            =
	Database        = database
	User            = root
	Password        = root

4.安装golang的ODBC驱动

驱动地址:github.com/weigj/go-odbc

Install:
	cd $GOPATH/src
	git clone git://github.com/weigj/go-odbc.git odbc
	cd odbc
	go install
	cd odbc/driver
	go install

如果go install的时候出现如下错误:

odbc.go:18:17: error: sql.h: No such file or directory
	odbc.go:19:20: error: sqlext.h: No such file or directory
	odbc.go:20:22: error: sqltypes.h: No such file or directory

说明本机还没有安装ODBC的原因,(鄙人菜鸟之前还不晓得ODBC是什么,所以才会犯这种低级错误哈)

5.写测试代码

package main;

import (
        "fmt"
        "database/sql"
        _"odbc/driver"
)

func main(){
        conn,err := sql.Open("odbc","DSN=SQLSERVER_SAMPLE;driver={ODBC Driver 11 for SQL Server};SERVER=192.168.1.235;UID=sa;PWD=zgj_1234;DATABASE=gameupdate");

        if(err!=nil){
                fmt.Println("Connecting Error");
                return;
        }
        defer conn.Close();
        stmt,err := conn.Prepare("select top 5 id from users_role");
        if(err!=nil){
                fmt.Println("Query Error",err);
                return;
        }
        defer stmt.Close();
        row,err := stmt.Query();
        if err!=nil {
                fmt.Println("Query Error",err);
                return;
        }
        defer row.Close();
        for row.Next() {
                var id int;
                if err := row.Scan(&id);err==nil {
                        fmt.Println(id);
                }
        }
        fmt.Printf("%s\n","finish");
        return;
}
在执行上面的go代码中,如果出现错误:
Query Error IM002 [unixODBC][Driver Manager]Data source name not found, and no default driver specified
可能是SQL Server Driver没有安装成功,或者DSN没有配置。关键还是在于需要对ODBC有一定了解,才不会犯低级错误。

有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:ijibu

查看原文:centos6.4下用golang连接mssql

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2336 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传