登录
首页 >  Golang >  Go问答

调用 field.UUID 时的参数不足,应该为(字符串)而实际传入为(字符串,driver.Valuer),导致退出状态 1

来源:stackoverflow

时间:2024-02-08 08:00:27 283浏览 收藏

一分耕耘,一分收获!既然打开了这篇文章《调用 field.UUID 时的参数不足,应该为(字符串)而实际传入为(字符串,driver.Valuer),导致退出状态 1》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢!

问题内容

我尝试使用 ent 和 entimport 生成现有的 plsql 数据库 https://entgo.io/blog/2021/10/11/generate-ent-schemas-from-existing-sql-databases/#run-entimport

虽然我收到以下错误:

生成./ent

entc/load:加载模式目录: /home/kay/powerlevel/backend/ent/schema/authentication.go:19:276:不是 调用 field.uuid 时有足够的参数 有(字符串) 想要(字符串,driver.valuer)退出状态1 ent/generate.go:3:运行“go”:退出状态

/ent/schema/authentication.go

// Code generated by entimport, DO NOT EDIT.

package schema

import (
    "entgo.io/ent"
    "entgo.io/ent/dialect/entsql"
    "entgo.io/ent/schema"
    "entgo.io/ent/schema/edge"
    "entgo.io/ent/schema/field"
    "github.com/google/uuid"
)

type Authentication struct {
    ent.Schema
}

func (Authentication) Fields() []ent.Field {
    return []ent.Field{field.UUID("id", uuid.UUID{}), field.String("type"), field.String("service_id"), field.String("session_id"), field.String("password"), field.Time("created_at"), field.Time("updated_at").Optional(), field.Time("deleted_at").Optional(), field.UUID("user_id").Optional(uuid.UUID{})}
}
func (Authentication) Edges() []ent.Edge {
    return []ent.Edge{edge.From("user", User.Type).Ref("authentications").Unique().Field("user_id")}
}
func (Authentication) Annotations() []schema.Annotation {
    return []schema.Annotation{entsql.Annotation{Table: "authentication"}}
}

正确答案


看起来 entimport 并不是一个完美的包。 如果你最后在 Field() 函数的 return 语句中看到 代码是这样的 , field.UUID("user_id").Optional(uuid.UUID{}) 应该是 , field.UUID("user_id",uuid.UUID{}).Optional()

在此 entimport 生成了错误的代码,因此您必须更改它,并且您不应该使用 entimport 包将数据库模式转换为 ent 代码 这不是完美的包,您需要根据需要更改代码

您可以做一件事,在不同的文件夹中生成代码,然后更改必要的代码,例如 entimport 未正确生成关系和数据类型,因此每次使用 ent import 生成代码时都必须更改它们。 然后将生成和编辑的代码放入您的项目中,这也将减少您自己编写整个代码,并且您还可以备份已完成更改的代码。因此,每次使用 entimport 时,都应该在项目之外的不同文件夹中使用它,然后进行必要的更改并仅替换项目中最新更改的文件。 虽然很麻烦,但事实就是如此。

可能会在以后的版本中修复

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>