草庐IT

DATABASE_VERSION

全部标签

database - 如何从 Go 中的多个表构造对象

我正在尝试找到处理由多个数据库表表示的对象的最佳方法。对于数据库访问,我用自己的类型包装了sqlx,然后定义了一些方法:typeDBstruct{*sqlx.DB}func(db*DB)GetSomething(iduint32)*Something{}func(db*DB)AddSomething(*Something){}它适用于与单个数据库表一对一映射的对象。我看到了几种处理多表对象的方法:在*DB上定义从多个表中进行选择的方法,然后构造一个对象。保存类似。在*DB之上创建一个层来构造一个对象。不要构建对象,而是使用它的部分。我更喜欢数字2,但需要有关如何在Go中设计它的帮助。

database - 带有 golang 的 Postgresql,问题

我创建了一个使用golang和postgresql作为数据库的API。在多次请求后,API崩溃并显示错误500并显示pq:sorry,toomanycustomersalready一开始是因为我选择的时候没有关闭行,所以我有rows.close()。但这不是因为我已经有这个错误了。然后看到启动数据库只需要3ms,我想我应该在每次请求时启动和关闭数据库以重置所有连接,不过仔细想想,这是无稽之谈。所以我问你,这个错误是如何产生的,是客户端连接在一定时间后重置还是连接被切断,直到客户端为客户端重新启动服务器?如果在一定时间后重置,增加最大客户端连接数有什么缺点?我的代码:我在程序开始时像这样

database - Postgres-Golang-模式与数据库?

我正在为我的应用程序使用golang和Postgres。在我的应用程序中,对于新用户,我正在为该用户创建新的数据库和表。因此,对于每个新客户,我正在创建新的数据库。在我的应用程序中处理时,我将建立太多连接来连接特定的用户数据库。这是目前正在做的。我的问题是,我是否必须为新用户而不是postgres中的数据库创建模式,以减少连接。在这种情况下,只在数据库下创建一个数据库,将创建过多的模式。这是否是最好的方法。 最佳答案 如果每个客户的架构不同,那么您应该使用基于事件的数据存储,而不是为每个字段创建列,而是创建行。本例中的每一行都包含4

database - Golang 代码的运行速度真的比 PHP 中的相同代码慢

Golang新手,昨天我开始使用Golang并编写了一些实际用PHP编写的代码。我只是想看看性能上的差异。我在PHP中做完全相同的事情,响应在http请求中完全相同,但Golang的执行速度非常慢,即使在编译之后也是如此。我试图了解我在Golang中使用的哪些东西不应该使用,以及我如何才能提高这段代码的性能。我知道遍历映射很慢,但是PHP使用散列映射来实现多维数组。我可以保证我使用的sql查询是从PHP粘贴的完全相同的副本,机器相同,并且两个代码中的循环数相同。packagemainimport("database/sql""encoding/json""fmt"_"github.co

database - 如何将数据库置于 git(版本控制)之下?

我正在做一个web应用程序,我需要为一些重大更改创建一个分支,问题是,这些更改需要更改数据库架构,所以我想将整个数据库也放在git下.我该怎么做?是否有一个特定的文件夹可以保存在git存储库下?我怎么知道是哪一个?我如何确定我放置的是正确的文件夹?我需要确定,因为这些更改不向后兼容;我不能搞砸。我的数据库是PostgreSQL编辑:有人建议进行备份并将备份文件而不是数据库置于版本控制之下。老实说,我觉得这很难下咽。必须有更好的方法。更新:好的,所以没有更好的方法,但我仍然不太相信,所以我会稍微改变一下问题:我想将整个数据库置于版本控制之下,我可以使用什么数据库引擎来将实际数据库置于版本

database - golang 数据库更新一个不存在的条目

我有一个更新数据库条目的函数,如下所示。逻辑是更新不存在的条目会返回错误。不知何故,我发现代码在错误处理方面有点冗长。有一个更好的方法吗?谢谢。func(adb*AppDB)UpdateTicket(tTicket)error{result,err:=adb.db.NamedExec(`UPDATEticketSETdetail=:detail,start_time=:start_time,end_time=:end_time,priority=:priorityWHEREid=:id;`,&t)iferr!=nil{returnerr}nRows,err:=result.RowsAf

database - 使用 Golang 检索 SQLite Pragma user_version

这是我使用SQLite的第一个项目,在尝试进行半自动模式迁移时,我想使用stackoverflow上许多其他答案所建议的user_versionpragma。我正尝试在Golang中执行此操作,但不确定我是否应该使用Exec、Query或类似的东西来获得此结果,然后如何将其呈现为可用的东西。在sqlite3中我可以运行'PRAGMAuser_version;'它将返回3或我设置的任何值。 最佳答案 当您使用PRAGMAuser_version读取值时,此语句的行为与查询完全相同,即SELECTuser_versionFROMsome

database - BTrDB 连接失败

我有一个在我的VM上运行的BTrDB容器的副本和一个Go程序,该程序试图通过从CSV中获取数据并将其插入来测试它。不幸的是,我在尝试连接时遇到错误ctx,_:=context.WithDeadline(context.TODO(),time.Now().Add(time.Duration(30)*time.Second))_,err:=btrdb.Connect(ctx,"192.168.99.100:4410")iferr!=nil{log.Fatal("Unexpectedconnectionerror:%v",err)}产量2017/03/1414:09:17transport:

database - 如何使用beego orm限制范围

我想使用beegoorm将一个属性限制在一定范围内,类似于CHECK(“column”>=0AND“column”在表格设置中。我可以用beego做到这一点吗?如果可以,怎么做? 最佳答案 该命令似乎没有提供任何用于插入CHECK的选项,它是一个相当深奥的SQL命令,并且在source中没有任何提示在getDbCreateSQL或docs.我建议你只用SQL创建你的表,然后插入你上面的sql,这应该是一次性任务,所以不要太繁重。 关于database-如何使用beegoorm限制范围,我

database - 如何使用没有循环指针的反射在 Golang 中调用 Scan variadic 函数?

我找到了关于howtocalltheScanvariadicfunctioninGolangusingreflection的答案。并且没有声望在那里问。这里是代码的主要部分:values:=make([]interface{},count)valuePtrs:=make([]interface{},count)forrows.Next(){fori,_:=rangecolumns{valuePtrs[i]=&values[i]}rows.Scan(valuePtrs...)...}而且我不明白为什么必须循环此语句?为什么for在forrows.Next中?forrows.Next(){