Mac下 golang连接数据库(mysql、sqlserver、oracle)

栏目: 数据库 · SQL Server · 发布时间: 7年前

内容简介:注:驱动都用 go get 下载如下图所示,需使用mysql驱动代码示例:

1.连接 mysql 数据库

注:驱动都用 go get 下载

如下图所示,需使用mysql驱动

// mysql 驱动
_ "github.com/go-sql-driver/mysql"

代码示例:

// 连接mysql数据库
s := "%s:%s@tcp(%s)/%s?charset=utf8&multiStatements=true"
url := fmt.Sprintf(s, userName, password, linkAddr+":"+port, "")

db, err := sqlx.Connect("mysql", url)
if err != nil {
    return nil, err
 }

db.SetMaxIdleConns(1)
db.SetMaxOpenConns(5)

defer db.Close()
db.Select(&dbNames, "show databases")

执行结果:

Mac下 golang连接数据库(mysql、sqlserver、oracle)

mysqlresult.png

2.连接sqlserver数据库

如下图所示,需使用sqlserver驱动

"github.com/jmoiron/sqlx" 
// sqlserver 驱动
_ "github.com/denisenkom/go-mssqldb"

代码示例:

// 连接sqlserver数据库
s := "server=%s;port%d;database=%s;user id=%s;password=%s"
url := fmt.Sprintf(s, linkAddr, port, "", userName, password)

db, err := sqlx.Connect("mssql", url)
if err != nil {
    return nil, err
}
db.SetMaxIdleConns(1)
db.SetMaxOpenConns(5)

defer db.Close()
db.Select(&dbNames, "select name from sysdatabases")

执行结果:

Mac下 golang连接数据库(mysql、sqlserver、oracle)

sqlserverresult.png

3.连接oracle数据库

如下图所示,需使用oracle驱动

// oracle 驱动
//_ "github.com/mattn/go-oci8"

注:oracle驱动需要配置才能下载,以下为配置过程

  • 下载包

  • 解压两个文件,然后合并到一个目录中

  • 将instantclient_12_2文件下的几个包链接到 usr/lib 目录下

    • 先进入文件目录下
    cd /oracle/instantclient_12_2/
    • 打开终端,执行以下命令
    ln -s libclntsh.dylib.12.1 /usr/lib
    ln -s libocci.dylib.12.1 /usr/lib  
    ln -s libociei.dylib /usr/lib
    ln -s libnnz12.dylib /usr/lib
    • 执行这些命令有可能会报错

      第一种错误:

      Mac下 golang连接数据库(mysql、sqlserver、oracle)

      notpermitted.png

    报错原因&解决方案(百度的):

    电脑启用了SIP(System Integrity

    Protection),增加了rootless机制,导致即使在root权限下依然无法修改文

    件,在必要时候为了能够修改下面的文件,我们只能关闭该保护机制

    关闭保护机制:

    1)重启,过程中按住 command+R,进入保护模式

    2)进入后打开实用工具--终端 ,输入

    csrutil disable

    3)再次重启,即可对 usr/bin 目录下文件进行修改

    注:如果要恢复保护机制,重新进入保护模式,输入

    csrutil enable

    第二种错误:

    Mac下 golang连接数据库(mysql、sqlserver、oracle)

    permissiondenied.png

    执行以下命令可解决

    sudo chown -R $(whoami)
    sudo chown -R $(whoami) /usr/lib
  • 安装pkg-config

    • 使用brew安装:brew install pkg-config

    • 下载pkg-config 地址: https://pkg-config.freedesktop.org/releases/

      使用的第一种安装方式,不用再执行别的命令。

      使用第二种安装方式,还需执行些以下命令

      ./configure  --with-internal-glib
      make
      sudo make install
  • 新建oci8.pc

    prefixdir=/Users/oracle/instantclient_12_2   // 你的路径
    libdir=${prefixdir} 
    includedir=${prefixdir}/sdk/include
    Name: OCI
    Description: Oracle database driver
    Version: 12.2  // 你的版本
    Libs: -L${libdir} -lclntsh
    Cflags: -I${includedir}

    oci8需要改两个地方 prefixdir,Version

    oci8.pc文件放在/Users/oracle/instantclient_12_2下

  • 配置环境变量

    PKG_CONFIG_PATH=/Users/oracle/instantclient_12_2
    LD_LIBRARY_PATH=/Users/oracle/instantclient_12_2
  • 下载驱动

    go get github.com/mattn/go-oci8

参考文章: https://www.jianshu.com/p/e94056c05c14


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

启示录

启示录

[美] Marty Cagan / 七印部落 / 华中科技大学出版社 / 2011-5 / 36.00元

为什么市场上那么多软件产品无人问津,成功的产品凤毛麟角?怎样发掘有价值的产品?拿什么说服开发团队接受你的产品设计?如何将敏捷方法融入产品开发?过去二十多年,Marty Cagan作为高级产品经理人为多家一流企业工作过,包括惠普、网景、美国在线、eBay。他亲历了个人电脑 、互联网、 电子商务的起落沉浮。《启示录:打造用户喜爱的产品》从人员、流程、产品三个角度介绍了现代软件(互联网)产品管理的实践经......一起来看看 《启示录》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

URL 编码/解码
URL 编码/解码

URL 编码/解码

MD5 加密
MD5 加密

MD5 加密工具