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")
执行结果:
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 使用多个数据库连接
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
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 格式化工具
html转js在线工具
html转js在线工具