少说话多写代码之GO开发——002:go连接数据库(Mac+vscode+mysql为例)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yysyangyangyangshan/article/details/87813954

以下步骤仅限小白参考,如内容引起不适,概不负责。

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()
}

调试结果如下,

猜你喜欢

转载自blog.csdn.net/yysyangyangyangshan/article/details/87813954
今日推荐