这是我参与「第五届青训营 」伴学笔记创作活动的第 16 天
自己实践遇到的问题
1.ubuntu20.04无法访问github问题
ubuntu20.04无法访问github问题(未解决,NAT模式下物理机开vpn进行download)
2.主机ping通虚拟机,虚拟机ping不同主机
解决方案: 关防火墙
3.安装Hertz提示GO GET Connection refused
解决方法
go1.13之后,出现上述提示的解决方法
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
go env -w GOSUMDB=off
查看自己是否是root用户
4.安装Hertz工具后无法查看版本
解决方法
- 切换到root用户
vim /etc/profile- 将GOPATH添加到环境变量(GOPATH通过
go env GOPATH查看)
export GOPATH=/home/liam/go
export PATH=$GOPATH/bin:$PATH
- 重新加载系统配置文件
source /etc/profile
5.go get无法拉取仓库
解决方法
go env -w GOSUMDB=off关闭拉取验证
6.go mod tidy 出现permisssion denied问题
解决方法
升级为root权限
7.解决 Golang 升级到 1.18+ 版本后在容器中构建时出现 error obtaining VCS status: exit status 128 的问题
- 直接在
.dockerignore中加入一行:
.git
复制代码
来让 Docker 构建的时候直接不复制 .git 目录到构建环境中。 * 或者也可以丑一点,在 Dockerfile 中加入一行 rm -rf .git,当然,这样就有点诡异了,如果本地 .git 目录太大的话, COPY . 这类操作会非常的卡 * 或者你也可以把 Go 版本降级到 1.18 以下
如果你是在容器以外的地方构建应用,且你的 Git 仓库有问题(无论是权限问题还是啥)的话,在构建参数中加入一个 -buildvcs=false 即可。
8.建的是user表,但是gorm查得是users表
蛇形复数命名问题
9.git merge fork
情况描述:我fork了仓库,master创建了branch,我sync fork合并了分支,在本地与远端仓库与master仓库都不符合的情况下如何更新。
解决方法
首先sync fork同步了master仓库和我的fork远端仓库
然后按一下步骤在本地执行命令
sudo chmod -R 777 ./.git/objects/ (解决无写权限问题)
git fetch
git status
git stash (保存本地工作)
git branch -r
git gc --prune=now
git pull
git merge origin/master
git stash pop
复制代码
参考链接
blog.csdn.net/itsxyu/arti…
git提交到自己的仓库
git status
git add .
git commit -m "评论"
git push
复制代码
10.protobuf文件需要相互引用(使用kitex框架)
解决方法
设置goland protobuf setting
放在同一个包下然后在要生成的文件夹下执行kitex命令
kitex -module dousheng -I /home/liam/Project/JccJ_J/idl -service publish publish.proto
11. minio调用返回的url过长,无法存入数据库
解决方法
截取?以前的字符串
衍生问题: 客户端无权限访问minio服务端
解决方法
把minio的bucket设置为公开
12.重启goland编译器后一直出于indexing和update indexing的状态
解决方法
因为开nginx生成了/data和/log文件夹,里面很多杂乱数据,将这两个文件夹设置为exluded,此外,我把config文件夹也excluded了
13.判断用户是视频是否有点赞关系时错误
发现问题: gorm中使用Asscoation(string).Find(&xx,xx)时,如果没有找到并不会返回gorm.ErrRecordNotFound类型错误
14.判断用户是视频是否有关注关系时错误
发现问题: 表中没找到的情况和err一起返回导致服务终止,空指针问题
15.feed流不是按发布顺序排列
发现问题: 按更新顺序排列了,gorm表中默认有
CreateAt `created_at`
UpdatedAt `updated_at`
DeletedAt `deleted_at`
复制代码
自己编程中,重复定义了UpdatedAt, 并以此作为feed的时间排序,导致只要某个视频被操作过,feed倒序排序就靠前 解决方法
删除自定义的UpdatedAt字段。使用created_at排序