请问orm报错empty database configuration for item name 'default'是什么问题呀,之前一直没有问题,这两天就不行了。但是数据库配置也没问题,在test包测试执行同样的orm也没问题(但是我重新装过go,不知道有没有关系)。执行gf gen dao也是报错Error: database initialization failed。
internal/dao/internal/ibk_info.go:80:39: cannot use f (variable of type func(ctx context.Context, tx *gdb.TX) error) as type func(ctx context.Context, tx gdb.TX) error in argument to dao.Ctx(ctx).Transaction
64 Comments
陈富贵
请问
orm
报错empty database configuration for item name 'default'
是什么问题呀,之前一直没有问题,这两天就不行了。但是数据库配置也没问题,在test
包测试执行同样的orm
也没问题(但是我重新装过go
,不知道有没有关系)。执行gf gen dao
也是报错Error: database initialization failed
。郭强
表示你的配置文件中的数据库配置有问题,检查一下,参考一下:ORM使用配置
Yufan Sheng
在微服务生产环境中,通常有数据库
migrate
需求,这块ORM
是否有考虑支持?郭强
暂无考虑。
白夜
那么项目中遇到随着版本更新,数据库的变更,比如2.0 比1.0 新增字段,新增表;需要进行版本升级,保留1.0的数据; 该怎么做呢?
英梨梨
gdb
有类似gorm
的AutoMigrate
自动建表功能吗?最近在学习focus
发现用的是gdb
但是搜了下没发现自动建表的功能 需要手动建表或者导入 是我没搜到还是没有呢?郭强
goframe
的orm
没有migrate
功能,未来估计也不太可能会有。ssz
发现两个问题
1、很多团队是基于 模型驱动开发(
DDD
),尤其是Java
团队转过来的人群,建议支持AutoMigrate
2、支持手动关闭数据库连接,比如在一些嵌入式设备上,需要多个进程修改
sqlite
中的数据,不能手动关闭,很容易造成database locked
ssz
当然,可能会有人建议我去用
gorm
或xorm
但是还是希望国产框架能够做的更好哈郭强
GoFrame ORM
不支持Migrate
特性,这种特性不太严谨,未来应该也不太可能会支持。你另外一个关于数据库连接关闭的问题,是可以手动关闭的,建议可以结合文档和源码一起看看。刘羽禅
DDL
操作 和DML
操作应该分开代码 应该只操作数据 而不应该操作数据库表
权限越位了。
且库表的创建修改权限,应该集中在技术管理人员手里,如果放在代码账号里,
人人都有权限,存在操作风险哦,团队内的成员,
SQL
水平参差不齐,安全意识也不一定到位。ssz
这是管理上的问题,不是所有问题都要在开发层面解决
奭奭
postgresql 如何支持LastInsertId,有别的方法可以用吗
奭奭
postgresql 如何实现获取自增主键
奭奭
gorm Create 是会返回主键的,请问,gform如何返回postgresql主键 RETURNING "id"
郭强
暂不支持
hyh
django 中的实现: https://github.com/django/django/blob/main/django/db/backends/postgresql/operations.py
用户是否可以在 insert sql 后面自己加 RETURNING "id"
郭强
很简单,可以提个PR。
xx
请问
g.DB().GetStructs
这些使用sql
语句查询的api
怎么调Cache
函数做数据缓存?郭强
你可以看看
Raw
方法通过SQL
语句创建为Model
,随后可以使用Model
的数据缓存特性。白开水
ORM开启多链接的情况下,有没计划提供针对同一对象的操作顺序保障。
因为在多连接情况下同一对象的操作请求走不同链接可能会导致数据的最终结果和预期的不一致。
郭强
你这个场景或许只有事务能帮助你,可以参考下章节:ORM事务处理
Heathcliff Huu
请问 orm 可以支持 hooks 操作吗?这样清理缓存就可以方便很多,且同一个 model 对应的多个缓存也可以一并清理
如:
就可以改造为:
郭强
GoFrame ORM
支持数据库级别的回调处理,具体请参考章节:ORM接口开发-回调处理 目前暂不支持Model
级别的回调功能。钱波
在调试中除了使用日志功能输出原生SQL语句的方法,还有没有链式操作的方法API输出原生的SQL语句?我在调试过程中,发现update无法输出原生SQL语句
郭强
请自己检查程序逻辑。
xx
大佬,请问mongodb这个应该这么用呢?网上找了也没看到goframe有人用过
海亮
直接用mongodb的官方库
https://docs.mongodb.com/drivers/go/
xx
这个我也看到了,官方这个据说不太好用。主要是怎么优雅的结合gf一起使用
小陈
我也期待强哥封装个MongoDB的, 感觉gf封装的模块都很别出心裁. 如果gf封装个, 七牛那个就指定没这个好用.
智刚
七牛封装了一个
g
ORM似乎不支持postgresql的数组类型,数据库中 是float4数组,通过orm查询出来的数据返回 “0”
郭强
请提个
issue
,把具体的类型名称发一下王一飞
请问一下,这个orm是否支持事件监听
lige
请问有没有类似beforeSave() , afterSave() 这样类似的方法,或者说类似的功能该怎么实现
郭强
GoFrame的ORM采用的是接口化设计,没有HOOK功能,你可以使用接口覆盖来实现自定义功能,相比较HOOK设计灵活性和扩展性更高。请参考:ORM接口开发-回调处理
lige
强哥,看到深入有点晕,在控制器里查询数据是直接用g.model("user") 还是用dao.User,包括在service里面, 什么时候用g.model("user") 和 dao.user 还是很模糊,这两者有什么区别呢
niyong
在控制器里查询数据是直接用g.model("user") 还是用dao.User,包括在service里面, 什么时候用g.model("user") 和 dao.user 还是很模糊,这两者有什么区别呢 我看着也蒙,这两种有各自的应用场景吗?
郭强
dao
是项目工程管理中的模块,由框架工具自动生成和维护,推荐开发业务项目都按照框架推荐的工程结构进行。g.Model
是便捷的模型创建方法,相对上层业务的工程架构来讲,是属于较低层的组件工具方法。王一飞
你好,请问一下,这个orm能实现监听binlog吗?
郭强
你好,个人觉得这并不是
ORM
应该做的事情。long
郭强
获取
error
的错误码可以使用gerror.Code
方法,具体请参考章节:错误处理-错误码使用lance
郭强 , driver分离后,做单元测试时,如何处理, 是否得在每个会调用orm的test.go文件,都要手动引入
强仔
我是这个样子,
郭强
lance 强仔 在相同包下只需要引用一次即可。
小陈
有这么多对象获取方式原因在于
GoFrame
是一个模块化设计的框架,每个模块皆可单独使用。-------------
之前不理解, 现在知道了, 我就说咋就创建对象都这么多方法.
saner
目前的ORM中是否可以实现跨进程的事务处理?
gtrace.SetBaggageValue(ctx, "tx", tx)
在另一个服务中用GetBaggageValue实际上是拿不到的,是否可以把Tx的 TranslationId返回,另一个进程中通过TranslationId构造这个gdb.TX
-----------------------------
另外:跨进程的事务的设计是否合理?是否应该避免?
小陈
事务, 应该是数据库本身提供的功能, 和进程与否没有关系.
换言之, --->可以实现跨进程的事务处理
糖水不加糖
这不就是分布式事务的基础原型吗
阔空晴云
不支持
AutoMigrate
的话,涉及分表该怎么做呢?例如,类似金融里的行情数据,如果所有标的的tick行情数据都保存到一个表里面,这个表就会特别大而且查询速度会特别慢,通常的做法就是根据标的来分表,每个标的单独一个表。这些表的结构都一样,但是表名不一样。
每当有新的标的出现时,就得动态创建一个单独的表。这种情况只能用原生SQL或者直接使用类似gorm的包么?
糖水不加糖
可以用hook特性去实现,但目前在hook中替换in.Table还不能生效需要等待修复这个问题.临时可以用repace去实现或者直接fork自己改
阔空晴云
好的 谢谢,我试试
kklt
用gf gen dao生成的代码经常会报这个错误
internal/dao/internal/ibk_info.go:80:39: cannot use f (variable of type func(ctx context.Context, tx *gdb.TX) error) as type func(ctx context.Context, tx gdb.TX) error in argument to dao.Ctx(ctx).Transaction
糖水不加糖
更新下对应版本的cli
kklt
好的 gf up -a
程家三少爷
因业务需要,对于分表有极大的需求,不知道这个db能介入go-gorm sharding吗?或者说可以通过什么方法,最终实现分表。谢谢大佬们。
c5cle
佬!gf orm 有类似gorm数据库迁移的功能吗,翻了翻文档没找到。
糖水不加糖
无
void
有计划提供获从连接池取同一个session连接的方法吗?除了事务有一些查询也是可能涉及到同一个会话内操作才能正确的,比如会话变量什么的
KingKong
默默的问一句,现在很多数据库不支持,如果能过odbc是不是可以链接一些没有驱动的数据库,如果可以的话,存在那些问题
小陈
很多吗? 我怎么感觉主流数据库都支持了. 实在不支持自己编写适配器呗
caiwenjun
没有类似 migrate的功能吗?纯手工维护sql表结构?
le li
数据库是postgresql时候, gf gen dao int8字段 生成的类型是unit 应该改成int64