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


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

查看所有标签

猜你喜欢:

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

The Hard Thing About Hard Things

The Hard Thing About Hard Things

Ben Horowitz / HarperBusiness / 2014-3-4 / USD 29.99

Ben Horowitz, cofounder of Andreessen Horowitz and one of Silicon Valley's most respected and experienced entrepreneurs, offers essential advice on building and running a startup—practical wisdom for ......一起来看看 《The Hard Thing About Hard Things》 这本书的介绍吧!

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

在线压缩/解压 JS 代码

随机密码生成器
随机密码生成器

多种字符组合密码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试