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

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

内容简介:注:驱动都用 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


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

查看所有标签

猜你喜欢:

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

颠覆者:周鸿祎自传

颠覆者:周鸿祎自传

周鸿祎、范海涛 / 北京联合出版公司 / 2017-11 / 49.80元

周鸿祎,一个在中国互联网历史上举足轻重的名字。他被认为是奠定当今中国互联网格局的人之一。 作为第一代互联网人,中国互联网行业最好的产品经理、创业者,他每时每刻都以自己的实践,为互联网的发展贡献自己的力量。 在很长一段时间内,他没有在公共场合发声,甚至有粉丝对当前死水一潭的互联网现状不满意,发出了“人民想念周鸿祎”的呼声。 但周鸿祎在小时候,却是一个踢天弄井,动不动就大闹天宫的超级......一起来看看 《颠覆者:周鸿祎自传》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

MD5 加密
MD5 加密

MD5 加密工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换