mac连接oracle和mysql_Mac下 golang连接数据库(mysql、sqlserver、oracle)

本文介绍了在Mac操作系统中,使用Go语言连接MySQL、SQLServer和Oracle数据库的方法。针对每个数据库,提供了相应的驱动引入、连接字符串格式及示例代码。对于Oracle数据库,还详细阐述了配置驱动的步骤,包括解决SIP保护机制问题、安装pkg-config以及oci8.pc文件的编辑和环境变量设置。
摘要由CSDN通过智能技术生成

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")

执行结果:

83ce577ef26bfcbb17ab57f801360af1.png

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")

执行结果:

a9d345d150582aec62eec039a3d2e3ae.png

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

执行这些命令有可能会报错

第一种错误:

c69c323485c3a79ae50f029630fe2b8f.png

notpermitted.png

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

电脑启用了SIP(System Integrity

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

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

关闭保护机制:

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

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

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

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

第二种错误:

b38fd865c8648eaad86e1a65111eaf52.png

permissiondenied.png

执行以下命令可解决 sudo chown -R $(whoami)

sudo chown -R $(whoami) /usr/lib

安装pkg-config

使用brew安装:brew install pkg-config

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

使用第二种安装方式,还需执行些以下命令 ./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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值