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

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

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


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

查看所有标签

猜你喜欢:

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

自媒体写作,从基本功到实战方法

自媒体写作,从基本功到实战方法

余老诗 / 清华大学出版社 / 2018-9-1 / 59.00元

《自媒体写作》是一本系统而通俗易懂的自媒体写作指导书。 全书共分为10章,分别从写作基本功、新媒体认知、新媒体传播规律和自媒体作者阅读写作素养以及如何进阶等方面展开,结合简书、公众号、今日头条等主流自媒体所选例文,讲解写作知识和新媒体特点,内容详实,有理有据,非常适合自媒体写作爱好者自学。 尤其值得一提的是,写作基本功部分从原理、方法和技巧三个层面展开论说,让自媒体写作学习者既能从根本......一起来看看 《自媒体写作,从基本功到实战方法》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具