go 基础笔记

go 基础笔记

_ "github.com/go-sql-driver/mysql"

该行代码是Go语言中的导入语句,但带有下划线(_)前缀表示该包被导入但其内容不会被直接引用。这样做是为了触发包的初始化函数(如果有的话),通常用于注册数据库驱动或者其他类似的任务。具体到这段代码:

github.com/go-sql-driver/mysql:这是Go语言中一个非常流行的MySQL数据库驱动包,用于让Go程序能够与MySQL数据库进行通信。
_:前缀表明这个导入是仅为了其副作用(如初始化函数执行),而不是为了直接使用其中的标识符(函数、变量等)。
因此,这行代码的作用是确保MySQL数据库驱动在程序启动时被注册,使得之后可以使用database/sql包来打开MySQL数据库连接。

Go项目依赖关系

go mod tidy
go mod tidy是Go模块化系统中的一个命令,它有以下主要功能:

清理无关模块:该命令会检查go.mod文件和项目中的导入语句,移除那些go.mod中记录了但实际项目代码中未使用的模块依赖。
添加缺失模块:如果项目代码中导入了某些包,而这些包对应的模块没有在go.mod文件中被声明,go mod tidy会自动将这些缺失的模块添加到go.mod文件中。
更新版本信息:它还会更新go.mod文件中的模块版本信息,确保它们与实际使用的版本相匹配,特别是当存在诸如go get命令手动更新依赖后的情况。
整理go.sum:同时,go mod tidy会维护或更新go.sum文件,该文件记录了所有直接和间接依赖的模块的版本信息及其内容哈希值,确保构建的复现性和安全性。
总之,go mod tidy是一个用来维护Go项目依赖关系的工具,确保go.mod和go.sum文件准确无误,这对于团队协作和持续集成环境尤其重要。

ORM(对象关系映射)库

在Go语言中,根据Go定义的结构体模型自动创建数据库表的功能并不直接由标准库database/sql提供。但是,你可以借助ORM(对象关系映射)库来实现这一需求,例如GORM或SqlBoiler等。以下是使用GORM库的一个简单示例:

首先,你需要安装GORM库和对应的MySQL驱动:
go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql

package main

import (
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
)

type User struct {
	gorm.Model
	Name  string
	Email string
}

func main() {
	dsn := "root:P9zY6BfsK4d3Ua2@tcp(node1:31010)/user_info?charset=utf8mb4&parseTime=True&loc=Local"
	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
	if err != nil {
		panic("failed to connect database")
	}

	// 自动迁移模式,根据struct创建表或者更新表字段
	db.AutoMigrate(&User{})
}
在这个例子中,db.AutoMigrate(&User{})会根据User结构体的定义自动创建或更新表结构。确保你的数据库连接字符串正确无误,并且已经正确设置了数据库用户权限。

mysql 建库

CREATE DATABASE news CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
这里解释一下各部分的含义:

utf8mb4 是MySQL中用于存储Unicode字符的一种字符集,它支持存储表情符号等4字节的Unicode字符,比早期的utf8字符集更全面。
COLLATE utf8mb4_unicode_ci 指定了数据库的排序规则(Collation)。unicode_ci 表示基于Unicode的校验规则,其中ci代表“case-insensitive”,即在比较字符串时不区分大小写。这有助于在不考虑字母大小写的情况下进行有效的字符串比较和排序。
这样的设置可以确保你的news数据库能够很好地处理多语言文本,包括特殊字符和表情符号,且在比较数据时忽略大小写差异。

SHOW GRANTS FOR CURRENT_USER;
这条SQL命令将会返回一系列的权限语句,展示了当前用户被授予的具体权限,比如SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER等,以及这些权限作用的范围(全局、特定数据库、特定表等)。

请注意,执行这个命令需要你已经通过某种方式(如命令行客户端、图形界面工具等)连接到了MySQL服务器。

在MySQL中,如果你想要查询当前登录用户的权限,可以使用SHOW GRANTS命令。这个命令会显示当前用户的所有全局权限以及针对特定数据库或表的权限。以下是如何执行这个命令的示例:

错误信息 "default addr for network '127.0.0.1:3306' unknown" 表示程序在尝试连接到MySQL数据库时遇到了问题,具体来说是无法识别或解析给定的默认地址 '127.0.0.1:3306'。这个地址通常指的是本地环回地址(localhost)上的MySQL服务的默认端口3306。

可能的原因包括但不限于:

MySQL服务未运行:确保MySQL服务正在运行。你可以通过系统的服务管理工具检查(如Windows上的任务管理器,Linux或macOS上的systemctl status mysql或service mysql status命令)。

端口被占用或服务监听地址错误:虽然错误信息中的地址通常是MySQL的默认地址,但也有可能MySQL服务被配置为监听其他地址或端口,或者3306端口被其他服务占用了。你可以使用netstat -tuln | grep 3306(Linux/macOS)或Get-Process -Id (Get-NetTCPConnection -LocalPort 3306).OwningProcess(PowerShell on Windows)来检查端口占用情况。

配置错误:检查你的应用程序或数据库连接配置,确认没有拼写错误,比如地址是否正确书写为 '127.0.0.1:3306' 或 localhost:3306。

防火墙限制:确认没有防火墙规则阻止了到3306端口的连接。

MySQL配置问题:MySQL的配置文件(如my.cnf)可能配置了只允许特定IP或拒绝了localhost的连接,需要检查并调整配置。

解决步骤建议:

首先,验证MySQL服务状态。
检查端口占用情况,确保3306端口被MySQL服务占用。
确认应用程序的数据库连接配置正确无误。
如果有必要,检查MySQL的配置文件和系统防火墙设置。
如果以上都正常,考虑重启MySQL服务或你的应用程序尝试重新建立连接。
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值