每天忙碌的日子,也不要忘记了好好生活 🏠

vuePress-theme-reco happylay 🐑    2020 - 2021
每天忙碌的日子,也不要忘记了好好生活 🏠 每天忙碌的日子,也不要忘记了好好生活 🏠

Choose mode

  • dark
  • auto
  • light
主页
分类
  • 手册
  • 前端
  • 后端
  • 工作
  • 相册
  • 文档
标签
时间轴
文档
  • 轨迹
个人空间
  • 哔哩哔哩
  • 编辑博客
工具集
  • 后端工具

    • 在线json解析
    • yml格式转换
    • websocket测试
    • 时间戳转换
    • cron表达式
    • linux程序包
    • 大小写转换
    • toml格式转换
  • 后端框架

    • Spring
    • GoFrame
  • 前端工具

    • Vant移动端组件库
    • Element桌面端组件库
    • uni-app移动端框架
    • uview移动端框架
    • colorui2.0文档
    • Figma
    • Codepen
    • Dribbble
    • Iconfont阿里矢量图库
    • IconPark图标库
    • Icomoon
    • Remixicon
    • favicon图标制作
  • 开发环境

    • windows包管理器-baulk
    • windows包管理器-scoop
    • windows原版镜像
    • nexus3仓库
  • 微服务

    • 版本兼容关系
    • k8s在线配置
    • k8s接口文档
GitHub
author-avatar

happylay 🐑

34

文章

24

标签

主页
分类
  • 手册
  • 前端
  • 后端
  • 工作
  • 相册
  • 文档
标签
时间轴
文档
  • 轨迹
个人空间
  • 哔哩哔哩
  • 编辑博客
工具集
  • 后端工具

    • 在线json解析
    • yml格式转换
    • websocket测试
    • 时间戳转换
    • cron表达式
    • linux程序包
    • 大小写转换
    • toml格式转换
  • 后端框架

    • Spring
    • GoFrame
  • 前端工具

    • Vant移动端组件库
    • Element桌面端组件库
    • uni-app移动端框架
    • uview移动端框架
    • colorui2.0文档
    • Figma
    • Codepen
    • Dribbble
    • Iconfont阿里矢量图库
    • IconPark图标库
    • Icomoon
    • Remixicon
    • favicon图标制作
  • 开发环境

    • windows包管理器-baulk
    • windows包管理器-scoop
    • windows原版镜像
    • nexus3仓库
  • 微服务

    • 版本兼容关系
    • k8s在线配置
    • k8s接口文档
GitHub
  • 2021

    • casbin实现权限控制
    • dig实现依赖注入
    • ffmpeg视频推流总结
    • gcc编译环境配置
    • goframe常见问题总结
    • goframe框架总结
    • golang工具总结
    • golang语法总结
    • protobuf安装与使用
    • redis实现分布式锁
    • 常用golang库总结

goframe常见问题总结

vuePress-theme-reco happylay 🐑    2020 - 2021

goframe常见问题总结

happylay 🐑 2021-01-14 17:12:28 代码片段golanggoframe

摘要: goframe常见问题总结 时间: 2021-01-14


# sqlite3打二进制后无法读取解决方案

由于goframe不会从内存中读取sqlite3文件,所以可以采取折中的方式,从内存中加载文件到本地。

package main

import (
	_ "github.com/gogf/gf-gen/boot"
	_ "github.com/gogf/gf-gen/router"

	"io/ioutil"

	"github.com/gogf/gf/frame/g"
	"github.com/gogf/gf/os/gfile"
	"github.com/gogf/gf/os/gres"
)

func main() {

	// 搜索文件路径-(源码加载文件方式)
	if absPath, err := gfile.Search("./db/sqlite3.db"); err == nil {
		g.Log().Info("绝对路径", absPath)
	} else {
		g.Log().Error("错误信息", err)
	}

	// sqlite3数据库所在路径
	path := "./db"

	// sqlite3数据库名称
	fileName := "sqlite3.db"

	// 内存文件路径(不能以./开头)
	memoryPath := "db/sqlite3.db"

	// 判断文件夹是否为空
	if empty := gfile.IsEmpty(path); empty {
		// 文件夹为空则创建文件夹
		if err := gfile.Mkdir(path); err == nil {
			// 从内存中获取资源文件
			file := gres.Get(memoryPath)
			// 将资源文件写入本地
			if err := ioutil.WriteFile(path+"/"+fileName, file.Content(), 0666); err != nil {
				// 记录错误日志
				g.Log().Error(err)
			}
			// 打印文件信息
			g.Dump(file)
		} else {
			// 记录错误日志
			g.Log().Error(err)
		}

	}

	g.Server().Run()

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54

# 加载配置文件相关源码

核心源码gcfg.go中FilePath()方法 。

func (c *Config) FilePath(file ...string) (path string) {
	name := c.name
	if len(file) > 0 {
		name = file[0]
	}
	// 搜索资源管理器
	if !gres.IsEmpty() {
		for _, v := range resourceTryFiles {
			if file := gres.Get(v + name); file != nil {
				path = file.Name()
				return
			}
		}
		c.paths.RLockFunc(func(array []string) {
			for _, prefix := range array {
				for _, v := range resourceTryFiles {
					// 查询获取资源管理器文件
					if file := gres.Get(prefix + v + name); file != nil {
						path = file.Name()
						return
					}
				}
			}
		})
	}
	// 搜索文件系统
	c.paths.RLockFunc(func(array []string) {
		for _, prefix := range array {
			prefix = gstr.TrimRight(prefix, `\/`)
			if path, _ = gspath.Search(prefix, name); path != "" {
				return
			}
			if path, _ = gspath.Search(prefix+gfile.Separator+"config", name); path != "" {
				return
			}
		}
	})
	return
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
编辑文档
最后一次更新: 2021/2/2 下午12:34:17
欢迎来到小屋。
看板娘