mysql 5 驱动_go语言学习项目篇Mysql_Markdown(1)

MySQL数据库表生成Markdown工具

业务描述

输入 :

连接MySQL数据库的 地址 端口 库名

输出 :

扫描输入库名的所有表生成如下格式的Markdown文档

#* 表名 *(*表备注*)* 字段名 | 字段类型 | 是否为空 | 备注 ‐‐‐|‐‐‐|‐‐‐|‐‐‐ id | int | N | 主键 name | varchar(20) | N | 用户名

首先 拿到一个问题 先分析需要用到的功能:

1.首先我要连接数据库 地址 端口 库名

2.输入库名,将该库名下所有表生成格式为Markdown格式的文档

2.1 输入

2.2获取表

2.3按md格式生成

分析完需求,开始寻找第一步如何使用go语言连接数据库?

首先我们学习如何使用go操控Mysql数据库

1.安装测试

1.1安装驱动(go语言不内置连接数据库的驱动,所以这里我们得使用第三方驱动)

go get github.com/go-sql-driver/mysql
import (    "database/sql"    "fmt"    _"github.com/go-sql-driver/mysql" //这里意思是导入,不直接使用。、    )

1.2测试是否安装成功(运行,没有报错就是成功)

package mainimport (    // go语言中的这个包提供了SQL和类SQL数据库的常用接口,但是没有提供驱动。    "database/sql"    // 在使用的时候必须注入一个驱动。(只能是第三方)    _ "github.com/go-sql-driver/mysql")func main() {    // DSN:Data Source Name     // dsn :="user:password@tcp(ip地址:端口)/库名"    dsn :="root:123456@tcp(127.0.0.1:3306)/dbname"    // ""中填你的驱动名称    db,err :=sql.Open("mysql",dsn)    // 报错格式    if err != nil {        panic(err)}    defer db.Close()}比如我把"mysql"中的q去掉,运行就会报错了。panic: sql: unknown driver "mysl" (forgotten import?)未知的驱动  mysl

然后因为database/sql我没有找到中文文档教程,然后转用GORM,GORM有中文文档教程,但是在此之前,我要重新配置一个mysql,和navicat。

安装Mysql数据库

到这里,那么我们先安装一个MySQL数据库,录入一些信息,再尝试如何使用go操控数据库。

1.安装mysql到指定文件夹。(我的安装目录是: D:\Mysql\mysql-8.0.22-winx64)2.在安装目录内创建一个配置文件my.ini[mysqld]# 设置3306端口port=3306# 设置mysql的安装目录basedir=D:\Mysql\mysql-8.0.22-winx64# 设置mysql数据库的数据的存放目录datadir=D:\Mysql\mysql-8.0.22-winx64\Data# 允许最大连接数max_connections=200# 允许连接失败的次数。max_connect_errors=10# 服务端使用的字符集默认为utf8mb4character-set-server=utf8mb4# 创建新表时将使用的默认存储引擎default-storage-engine=INNODB# 默认使用“mysql_native_password”插件认证#mysql_native_passworddefault_authentication_plugin=mysql_native_password[mysql]# 设置mysql客户端默认字符集default-character-set=utf8mb4[client]# 设置mysql客户端连接服务端时默认使用的端口port=3306default-character-set=utf8mb43.初始化使用管理员模式的命令端口(CMD)进入mysql的bin目录内下输入:mysqld --initializa --console 默认初始化命令D:\Mysql\mysql-8.0.22-winx64>cd binD:\Mysql\mysql-8.0.22-winx64\bin>mysqld --initializa --console2020-12-12T04:08:25.713423Z 0 [System] [MY-013169] [Server] D:\Mysql\mysql-8.0.22-winx64\bin\mysqld.exe (mysqld 8.0.22) initializing of server in progress as process 100122020-12-12T04:08:25.727804Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.2020-12-12T04:08:26.905803Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.2020-12-12T04:08:28.975272Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: 2yqowz(ehwsZ——————分界线———————————得到的这一串代码里面,root就是用户名,冒号后面的就是密码 2yqowz(ehwsZ用户名:root 密码:2yqowz(ehwsZ4.Mysql服务的安装-启动-登录4.1-安装 D:\Mysql\mysql-8.0.22-winx64\bin>mysqld --installService successfully installed.4.2-启动安装成功后输入 net start mysql (启动MySQL服务)D:\Mysql\mysql-8.0.22-winx64\bin>net start mysqlMySQL 服务正在启动 .MySQL 服务已经启动成功。          4.3登录D:\Mysql\mysql-8.0.22-winx64\bin>mysql -u root -pEnter password: ************   //win10复制后,鼠标右键填充密码。5.修改初始化密码ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';按照上面的格式          mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';Query OK, 0 rows affected (0.02 sec)  修改完成 退出来 重新登录验证一次D:\Mysql\mysql-8.0.22-winx64\bin>mysql -u root -pEnter password: ******  //我这里输入的是123456Welcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 9Server version: 8.0.22 MySQL Community Server - GPLCopyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.好 到这里 mysql就算是配置完成了为了打开cmd就能直接使用,设置一个path的环境变量就行了。

Navicat连接数据库

安装配置完Mysql数据库后 我们应该下载使用Navicat15 MySQL版本。

当你使用注册机的时候注意全程断网就行了。

然后到这里,就开始使用GORM。

GORM学习

什么是ORM?

Object RelationalMapping
对象关系映射
程序中的对象/实例(例如Go中的结构实例)关系数据库(例如MySQL)

比如

package mainimport (    "fmt")type Student struct {    id int     name string}func main() {    u1 :=Student{1,"JOJO"}    fmt.Println(u1)}main方法打印结果:{1 JOJO}

我们使用MySQL的原因就是将数据存储到数据库中,MySQL中的数据表就是结构体,数据行就是对象u1,‘字段’就是‘id int’,'name string'这样的字段。

首先按照视频讲解,我们在github中搜索到GORM,进入官网后,查看文档,为了锻炼看文档的能力,这教学视频看到开头,不看也罢!!!!开始看文档,分析我可能用到的要求。

1.连接数据库2.增删改查 3.遍历数据库表的内容//照着这个步骤搜寻知识,有空就全面总结。当然第一步登录github,创建一个账号,然后想一个读起来很6的拼音打上去!我的Username:Xiuluofashi然后在里面找到jinzhu的GORM,打开就能找到GORM官网文档https://gorm.io/docs/

开始正式学习:

下载安装驱动:

go get -u github.com/jinzhu/gorm

完成后可以开始学习了

1.使用GORM连接数据库

官方文档:

import (  "gorm.io/driver/mysql"  "gorm.io/gorm")func main() {  // 参考 https://github.com/go-sql-driver/mysql#dsn-data-source-name 获取详情  dsn := "user:pass@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"  db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})}

连接:

package mainimport (    _ "github.com/go-sql-driver/mysql"    "github.com/jinzhu/gorm")type Student struct {    id int     name string     age int    sex string }func main() {    // 这里的信息是我的数据库的信息    dsn := "root:123456@tcp(127.0.0.1:3306)/study?charset=utf8mb4&parseTime=True&loc=Local"    // 这里有2个值,一个是 *gorm.DB类型 一个是error类型,需要两个变量来接受    db, err := gorm.Open("mysql",dsn)    // err是报错信息需要验证    if err != nil {        panic(err)}    // 运行一次结束程序    defer db.Close()     // 把结构体和数据表进行对应    db.AutoMigrate(&Student{})    u1 := Student{id:1, name:"叶良辰", age:19,sex:"男"}    db.Create(&u1)}然后我这里连接后,看我的study数据库中的信息还是为空!!!!!(〃>目<)mysql> show tables;Empty set (0.00 sec)也就是说根本没连上,我想是不是端口号弄错了,然后我检查端口show global variables like 'port';+---------------+-------+| Variable_name | Value |+---------------+-------+| port          | 3306  |+---------------+-------+1 row in set, 1 warning (0.02 sec)起初以为密码密码输入错了,改了一个值后报错panic: Error 1045: Access denied for user 'root'@'localhost' (using password: YES)那现在的情况就是,账号密码端口都是对的情况下,数据库连上了但是数据录不进去的问题。最后想起来了,之前go get的时候有一个exec;exec: "gcc": executable file not found in %PATH%原来是找错了方向,安装gcc那么就需要MinGW64位版本的软件。脚本之家就能下载。安装完后,配置bin环境变量,使用命令行gcc -v 出来代码就安装上了,然后运行代码,还是一样的问题,得不到解决,弄到这里花了N多个小时却没有解决这种小问题,关键是本人还知道这是学习前的准备工作,卡在了这里!!!!!!很崩溃,但是得牢牢记住一句话--搜集资源,心态稳住,行胜于言该找问题,还是得找问题。毕竟没有得到解决。

那么还是得找,为什么和视频中一模一样的操作,代码都一模一样,为什么数据库连上了,传递了,就是没反应呢?慢慢来解决好了。

cbb1d0b6f7642e440f7aeaf74b3a62a2.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值