Database 添加结构数据中断调用
我正在使用gorp和*DBMap.addTableWithName()函数创建表 如果我有以下资料:Database 添加结构数据中断调用,database,postgresql,go,gorp,Database,Postgresql,Go,Gorp,我正在使用gorp和*DBMap.addTableWithName()函数创建表 如果我有以下资料: ... type S1 struct { Id int `db:"id"` Name string `db:"name"` Value string `db:"value"` } dbmap := &gorp.DbMap{Db: db, Dialect: gorp.PostgresDialect{}} dbmap.AddTableWithName(S1{},
...
type S1 struct {
Id int `db:"id"`
Name string `db:"name"`
Value string `db:"value"`
}
dbmap := &gorp.DbMap{Db: db, Dialect: gorp.PostgresDialect{}}
dbmap.AddTableWithName(S1{}, "s1Table").SetKeys(true, "Id")
...
这和预期的一样
如果我将结构修改为
...
type S1 struct {
Id int `db:"id"`
Name string `db:"name"`
Value string `db:"value"`
Extra string `db:"extra"`
}
...
那么表就不会用新的结构修改
如果我手动修改数据库
ALTER TABLE s1Table添加列额外文本代码>
然后运行我得到的任何查询
sql:column index 3上的扫描错误,名称“extra”:不支持将NULL转换为字符串
我已经查过戈多克的资料找戈普,但没有任何东西能帮我找到解决办法
我的问题是-gorp是否可以管理这些表更改?如果不是,那么如何做才能不导致不支持将NULL转换为字符串的错误。尝试添加额外的指针:Extra*string或者更改列以具有非NULL
约束,并为其设置默认值“”
,这样,该表中的任何行都不会将该列设置为NULL
。或者,使用sql.NullString
,或者*string
而不是string
作为Extra
字段的类型。谢谢@mkopriva-我一直在尝试将空白字符串的默认值设置为“not”(PEBKAC)。你知道如何在gorp中管理这些变化吗?另外,如果您将命令更改为答案,我会将其标记为一个偶然的结果,因为我没有gorp的经验,所以我不知道如何使用它处理迁移。