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


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

查看所有标签

猜你喜欢:

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

Head First Rails

Head First Rails

David Griffiths / O'Reilly Media / 2008-12-30 / USD 49.99

Figure its about time that you hop on the Ruby on Rails bandwagon? You've heard that it'll increase your productivity exponentially, and allow you to created full fledged web applications with minimal......一起来看看 《Head First Rails》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

html转js在线工具
html转js在线工具

html转js在线工具