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")
执行结果:
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")
执行结果:
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
-
执行这些命令有可能会报错
第一种错误:
notpermitted.png
报错原因&解决方案(百度的):
电脑启用了SIP(System Integrity
Protection),增加了rootless机制,导致即使在root权限下依然无法修改文
件,在必要时候为了能够修改下面的文件,我们只能关闭该保护机制
关闭保护机制:
1)重启,过程中按住 command+R,进入保护模式
2)进入后打开实用工具--终端 ,输入
csrutil disable
3)再次重启,即可对 usr/bin 目录下文件进行修改
注:如果要恢复保护机制,重新进入保护模式,输入
csrutil enable
第二种错误:
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
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- EF Core 小坑:DbContextPool 会引起数据库连接池连接耗尽
- 数据库连接池
- 数据库连接池设置
- 怎样获知数据库的连接属性?
- 怎样获知数据库的连接属性?
- Laravel 使用多个数据库连接
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
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》 这本书的介绍吧!