go 基础笔记

文章目录

    • go 基础笔记
    • Go项目依赖关系
    • ORM(对象关系映射)库
      • mysql 建库

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/mysqlpackage mainimport ("gorm.io/driver/mysql""gorm.io/gorm"
)type User struct {gorm.ModelName  stringEmail 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服务或你的应用程序尝试重新建立连接。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/28106.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【单片机毕业设计选题24008】-基于单片机的寝室系统设计

系统功能: 1. 采用STM32最小系统板控制,将采集到温湿度光照等传感器数据显示在OLED上 2. 通过离线语音模块开关灯,风扇,门。 3. 监测到MQ2烟雾后触发报警。 4. 语音&手动&定时控制窗帘。 5. 按键开启布防模式,布防后…

上位机图像处理和嵌入式模块部署(h750 mcu和usb虚拟串口)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 对于mcu usb而言,大部分情况下,它和上位机之间的关系都是device的关系。一般usb,可以分成host和device。如果mc…

自动化测试git的使用

git是一款分布式的配置管理工具。本文主要讲git如何在自动化测试中安装,上传及拉取下载代码。 1 、git 介绍 每天早上到公司,从公司的git服务器上下载最新的代码,白天在最新的代码基础上,编写新的代码,下班时把“代码…

SSID简介

一、 SSID 概念定义 SSID(Service Set Identifier)即服务集标识符。它是无线网络中的一个重要标识,用于区分不同的无线网络。 相当于无线网络的名称,用于区分不同的无线网络。用户在众多可用网络中识别和选择特定网络的依据。通…

消息队列-消息队列保证消息可靠性的一些建议

如何检测到消息丢失? 美团消息队列文章中提到了对消息队列的监控手段,我理解消息丢失,根据不同节点来查看监控: 生产者生产丢失:监控中生产者生产量异常消费者消费丢失:查看消费者消息延迟监控、消费者 o…

新能源汽车高压上电、高压下电逻辑分析

高压上电逻辑 新能源汽车的上电分为高压上电和低压上电,高压上电流程一般理解为高压件通电的过程,具体流程如下: 1、点火开关处于ON档时,仪表盘点亮,低压电接通。 2、VCU、BMS、MCU等控制模块依次被唤醒并开始进行自检…

基于Java自习室在线预约系统 的设计与实现

博主介绍: 大家好,本人精通Java、Python、C#、C、C编程语言,同时也熟练掌握微信小程序、Php和Android等技术,能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验,能够为学生提供各类…

解决JupyteNotebook打不开问题

问题:打开jupyternotebook出现黑色界面,马上闪退 步骤: 1、winr,cmd进入,conda activate yes 进入yes环境(后面是要下载新的jupyter notebook),我这里下载到了yes环境下 2、下载jupyter Note…

<Rust><iced>基于rust使用iced库构建GUI实例:图片的格式转换程序

前言 本专栏是Rust实例应用。 环境配置 平台:windows 软件:vscode 语言:rust 库:iced、iced_aw 概述 本文是专栏第二篇实例,是一个图像格式转换程序,基于rust图像处理库image以及文件处理库rfd。 UI演示&…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] URL拼接(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📎在线评测链接 URL拼接(100分) 🌍 评测功能需要订阅专栏后私信联系清隆解…

Python中的数据可视化:绘制三维线框图plot_wireframe()

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 Python中的数据可视化: 绘制三维线框图 plot_wireframe() [太阳]选择题 在上面的代码中,plot_wireframe() 方法用于绘制什么类型的图形? import matplot…

冷却塔蒸发量及补水量计算

1 冷却塔补水量计算 冷却塔补水蒸发量排污量飘散损失泄漏量。一般冷却塔内水份的蒸发量约为进水量的1~2.5%。 (1)蒸发量 总冷却循环水量的蒸发量E C ① 冷却蒸发量 E E=72Q(X1–X2)=L △t/600 E : 蒸发量…

react有什么特点

React的特点可以归纳为以下几点: 声明式设计:React采用声明式设计,使得创建交互式用户界面变得简单。在React中,可以为应用的每一个状态设计简洁的视图,当数据变化时,React能够高效地更新并渲染相应的组件…

C# OpenCvSharp Mat操作-创建Mat-Range

📸 C#中使用OpenCvSharp库的Range类详解 在C#中使用OpenCvSharp库时,Range类是一个用于定义范围的工具,通常用于选择图像的感兴趣区域(ROI, Region of Interest)。下面是对该类及其使用方法的详细解释和举例说明。&am…

[Algorithm][贪心][K次取反后最大化的数组和][身高排序][优势洗牌][最长回文串]详细讲解

目录 1.K 次取反后最大化的数组和1.题目链接2.算法原理详解3.代码实现 2.身高排序1.题目链接2.算法原理详解3.代码实现 3.优势洗牌1.题目链接2.算法思路详解3.代码实现 4.最长回文串1.题目链接2.代码实现 1.K 次取反后最大化的数组和 1.题目链接 K 次取反后最大化的数组和 2.…

通过shell脚本检查web应用是否正常

#!/bin/bash #功能检查web应用是否正常 #作者:hp.li #日期:202406015 RUN_PATH$(dirname $(readlink -f "$0")) #检查web网站是否可和函数 check_url(){ #方法一:通过%{http_code}"参数获取状态码 #HTTP_CODE$(curl -o /dev/null --connect-timeou…

Golang 并发编程(Goroutine、Channels、Select、Sync、原子操作函数、Context、gpool)

文章目录 GoroutineSync(同步机制)sync.Mutex(互斥锁)sync.RWMutex(读写互斥锁)sync.WaitGroup(等待组)sync.Map(并发安全的映射) sync/atomic(原…

Java课程设计:基于Javaweb的校园订餐系统

文章目录 一、项目介绍二、项目技术栈三、核心代码四、项目展示五、源码获取 一、项目介绍 在当今互联网高速发展的时代,大学校园内的学生生活正在发生着翻天覆地的变化。其中,校园内的餐饮服务无疑是亟需改革和创新的领域之一。 传统的校园食堂模式,往往存在就餐高峰时段拥挤…

DELL服务器插入新磁盘、创建虚拟磁盘、挂载磁盘步骤

文章目录 一、磁盘清理(可选,针对新硬盘是Foreign状态)1、进入VD Mgmt2、清理新硬盘配置 二、创建虚拟磁盘1、进入Device Settings2、创建虚拟磁盘 三、挂载磁盘到系统1、分区磁盘(注意实际磁盘的名称)2、格式化分区3、…

Java web应用性能分析之【prometheus+Grafana监控springboot服务和服务器监控】

Java web应用性能分析之【java进程问题分析概叙】-CSDN博客 Java web应用性能分析之【java进程问题分析工具】-CSDN博客 Java web应用性能分析之【jvisualvm远程连接云服务器】-CSDN博客 Java web应用性能分析之【java进程问题分析定位】-CSDN博客 Java web应用性能分析之【…