Golang 操作mysql使用举例---连接本地数据库
连接数据库的方式有两种:TCP和Unix域socket。
本文使用Unix domain sockets连接数据库。关于TCP连接数据库可以参考Go 操作mysql使用举例
下面例子中,演示了使用show命令查看数据库连接信息的过程。
mysql> show processlist;
+----+------+----------------------+------+---------+------+----------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+----------------------+------+---------+------+----------+------------------+
| 26 | root | 172.24.232.66:7868 | sys | Query | 0 | starting | show processlist |
+----+------+----------------------+------+---------+------+----------+------------------+
1 row in set (0.00 sec)
代码如下:
package main
import (
"database/sql"
"fmt"
"log"
_ "github.com/go-sql-driver/mysql"
)
type DBConnectionInfo struct {
ID []byte
User string
Host string
DB []byte
Cmd string
Time []byte
State string
Info []byte
}
func(f *DBConnectionInfo) String() string{
return fmt.Sprintf("ID:%s, User:%s, Host:%s, DB:%s, Cmd:%s, Time:%s, State:%s, Info:%s", string(f.ID), f.User, f.Host, string(f.DB), f.Cmd, string(f.Time), f.State, string(f.Info))
}
const (
mysqlShowProcessList="show processlist"
)
var DB *sql.DB
//var dataBase = "root:Aa123456@unix(/tmp/mysql.sock)/mysql"
var dataBase = "root:Aa123456@unix(/tmp/mysql.sock)/"
func Init() {
var err error
DB, err = sql.Open("mysql", dataBase)
if err != nil {
log.Fatalln("open db fail:", err)
}
err = DB.Ping()
if err != nil {
log.Fatalln("ping db fail:", err)
}
}
func main() {
Init()
query()
}
func query() {
rows, err := DB.Query(mysqlShowProcessList)
if err != nil {
log.Println("query failed:", err)
return
}
defer rows.Close()
for rows.Next(){
data := &DBConnectionInfo{}
if err := rows.Scan(&data.ID, &data.User, &data.Host, &data.DB, &data.Cmd, &data.Time, &data.State, &data.Info); err != nil {
log.Println("Scan failed:", err)
}
fmt.Println("data:", data)
}
}
output:
data: ID:145, User:root, Host:localhost, DB:, Cmd:Sleep, Time:632, State:, Info:
data: ID:172, User:root, Host:localhost, DB:, Cmd:Query, Time:0, State:starting, Info:show processlist
参考
https://blog.csdn.net/lanyang123456/article/details/79831537
https://www.cnblogs.com/hanyouchun/p/6708037.html
Golang 操作mysql使用举例---连接本地数据库的更多相关文章
- navicat for mysql连接本地数据库
navicat for mysql连接本地数据库 打算使用navicat连接本地数据库,连接的时候,一直连接不上.然后猜想是不是本地数据库没有设置好.输入mysql,出错内容:access denie ...
- 错误解决记录------------mysql连接本地数据库显示"can't get hostname for your address"
mysql连接本地数据库遇到 can't get hostname for your address 不明原因的本地mysql数据库连接不上,总是显示can't get hostname for yo ...
- MySQL 连接本地数据库、远程数据库命令
一.MySQL 连接本地数据库,用户名为“root”,密码“123”(注意:“-p”和“123” 之间不能有空格) C:/>mysql -h localhost -u root -p123 二. ...
- golang操作mysql数据库
golang操作mysql数据库 代码: mysql的增.删.改.查 package main import ( "database/sql" "fmt" &q ...
- MySQL连接本地数据库时报1045错误的解决方法
navicat for MySQL 连接本地数据库出现1045错误 如下图: 说明连接mysql时数据库密码错误,需要修改密码后才可解决问题: 解决步骤如下: .首先打开命令行:开始->运行 ...
- navicat for MySQL连接本地数据库时报1045错误的解决方法
navicat for MySQL 连接本地数据库出现1045错误 如下图: 说明连接mysql时数据库密码错误,需要修改密码后才可解决问题: 解决步骤如下: 1.首先打开命令行:开始->运行- ...
- [转帖]golang操作mysql使用总结
golang操作mysql使用总结 https://www.cnblogs.com/hanyouchun/ 讲解的很详细~ 前言 Golang 提供了database/sql包用于对SQL数据库的访问 ...
- Oracle 11g安装和PL/SQL连接完全解读(连接本地数据库)
Oracle安装是很多新手都烦恼的事情,各种奇怪的错误,并且还无从下手解决.我也隔了两年没有用Oracle了,昨天安装了一下,出现很多问题,也很苦恼.现在将安装过程详细记录下来,一来方便自己下次安装, ...
- 使用node中mysql模块连接本地数据库
连接数据库的方法迄今为止学了三种: cmd方式.可视化工具,今天记第三种----node端连接数据库. 一:mysql模块介绍与下载 1.mysql模块是node端专门连接数据库的第三方模块 2.下载 ...
随机推荐
- ChinaCock界面控件介绍-TCCImageViewerForm
有多个图片,左右滑动可以切换,通过手势还可以放大.缩小查看,象常见的相册,就是这样子实现效果. 现在,我们有了TCCImageViewerForm组件,也可以轻松实现这样的场景应用. 现在看看TCCI ...
- 团队-团队编程项目爬取豆瓣电影top250-代码设计规范
1.类名使用首字母大写(骆驼命名法) 2.函数名应该为小写 3.用下划线开头定义私有的属性或方法 4.命名要使用有意义的,英文单词或词组 5.行尾不加分号 6.4个空格缩进代码 7.操作运算符注意优先 ...
- gcd和lcm模板
long long gcd(long long b,long long c)//计算最大公约数{ return c==0?b:gcd(c,b%c);} long long lcm(long long ...
- href和src的区别
虽然一直在用这两个属性,但是一直没有具体的去区分和了解这两个属性的区别,今天就来看看 href标识超文本引用,用在link和a等元素上,href是引用和页面关联,是在当前元素和引用资源之间建立联系 s ...
- C++ STL 数据结构与算法 —— 排序
1. Top k 大的数 排序后直接索引输出:O(nlogn)" role="presentation">O(nlogn)O(nlogn) std::sort( ...
- sublime text3 key
Sublime Text 3 3126 注册码 第一个测试通过 —– BEGIN LICENSE —– Michael Barnes Single User License EA7E-821385 8 ...
- 20165228 2017-2018-2 《Java程序设计》第2周学习总结
20165228 2017-2018-2 <Java程序设计>第2周学习总结 教材学习内容总结 标识符:名字 组成:字母/下划线/美元符号或数字 注意:标识符的第一个字符不能是数字字符,且 ...
- Java中的访问权限细谈
一.成员访问控制权限 作用域 当前类 当前包 子孙类 其他包 public √ √ √ √ protected √ √ √ X private √ X X X default √ √ 当前包下继承可以 ...
- Unity 3D接入ShareSDK流程2
Unity开发VR之Vuforia 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- ...
- seo:网站被黑的预防及处理方法
一.网站被黑的类型有哪些 1.网站挂木马 :通过网站后台 FTP等植入恶意代码 2.网站域名被恶意泛解析 3.跳转 4.百度快照劫持:黑客劫持快照在你不工作的时候进入你的网站的,一般是凌晨1点到5. ...