以下步骤仅限小白参考,如内容引起不适,概不负责。
go操作数据库本身并不复杂,主要是环境的准备。
一、mysql安装
1、安装
去官网下载mysql对应的版本就好了。选择对应的操作系统,
然后安装即可。一般mac默认会安装在/usr/local/mysql/bin目录。
2、修改密码
安装时有一个初始密码,需要修改可按照如下步骤。
1) 关闭服务
点击系统偏好设置->最下边点MySQL,在弹出页面中,关闭服务
2)
进入终端输入:cd /usr/local/mysql/bin/
回车后 登录管理员权限 sudo su
回车后输入以下命令来禁止mysql验证功能 ./mysqld_safe --skip-grant-tables &
例如,操作如下
yangyoushan-pc:bin yangyoushan$ sudo su
Password:
sh-3.2# ./mysqld_safe --skip-grant-tables &
[2] 8431
[1] Done(127) .mysqld_safe --skip-grant-tables
sh-3.2# Logging to '/usr/local/mysql-5.7.25-macos10.14-x86_64/data/yangyoushan-pc.err'.
2019-02-12T16:14:02.6NZ mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql-5.7.25-macos10.14-x86_64/data
回车后mysql会自动重启(偏好设置中mysql的状态会变成running)
3)
输入命令 ./mysql
回车后,输入命令 FLUSH PRIVILEGES;
回车后,输入命令 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('你的新密码');
例如,操作如下,
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD(‘your new password’);
Query OK, 0 rows affected, 1 warning (0.00 sec)
二、mysql可是管理工具
我选择的是Navicat for mysql,现在安装即可。安装成功后,建立连接,
三、vscode中mysql环境配置
可自行上网了解。我这里介绍下我碰到的一些问题。
我们知道goroot和gopath目录,连接数据库,需要下载一些插件到gopath也就是我们的工程代码目录下。这个目录正常应该有三个文件夹:bin,pkg,src。
1、vscode中插件下载失败
进入gopath目录,找到src/github.com/golang,如果没有请自行创建。
在命令窗口中,cd到这个目录下,下载插件包
git clone https://github.com/golang/tools.git tools
下载完成后,src\github.com\golang多了一个tools目录,把tools目录下的所有文件拷贝到src/golang.org/x/tools下,如果没有自行创建。
2、还是有插件失败
下载了这个网友的资源:https://download.csdn.net/download/m1179457922/10497136,将这个文件夹放入工程代码同级目录下。比如,
四、代码测试
首先用navicat在mysql中创建一个测试的表,插入少量数据,比如
go的代码如下,
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func checkErr(err error){
if err!=nil{
panic(err)
}
}
func main(){
//fmt.Println("我的第一个mac上的go程序")
db,err:=sql.Open("mysql", "用户名:密码@tcp(127.0.0.1:3306)/mysql?charset=utf8")
checkErr(err)
stmt,err:=db.Prepare("select name,age,address from yys_person_info where 1=1")
checkErr(err)
rows ,err :=stmt.Query()
checkErr(err)
for rows.Next() {
var name string
var age string
var address string
err :=rows.Scan(&name,&age,&address)
checkErr(err)
fmt.Println(name,age,address)
}
defer db.Close()
defer stmt.Close()
defer rows.Close()
}
调试结果如下,