【发布时间】:2018-05-12 03:27:57
【问题描述】:
我以前用过Java,所以数据库表中某些列的类型是bit(1)。但是现在我想使用beego来重建我的项目,我不想改变我的数据库表(需要做很多事情)。我在我的项目中使用beego的orm。那么我应该使用哪种 Go 类型呢?
这样的表和被删除的列有问题:
+--------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| id | varchar(255) | NO | PRI | NULL | |
| created_time | datetime | YES | | NULL | |
| deleted | bit(1) | NO | | NULL | |
| updated_time | datetime | YES | | NULL | |
| icon_class | varchar(255) | YES | | NULL | |
| mark | varchar(255) | YES | | NULL | |
| name | varchar(255) | YES | | NULL | |
| parent | varchar(255) | YES | | NULL | |
+--------------+--------------+------+-----+---------+-------+
这样的结构:
type BaseModel struct {
Id string `orm:"pk";form:"id"`
CreatedTime time.Time `orm:"auto_now_add;type(datetime)";form:"-"`
UpdatedTime time.Time `orm:"auto_now;type(datetime)";form:"-"`
Deleted bool `form:"-"`
}
当我在代码中使用 bool 时,错误如下:
`[0]` convert to `*orm.BooleanField` failed, field: shareall-go/models.Category.BaseModel.Deleted err: strconv.ParseBool: parsing "\x00": invalid syntax
【问题讨论】:
-
首先,如果您的类型对应于一个布尔值(看起来,基于名称),您应该在 MySQL 中使用
BOOL。一旦您进行了更改,希望您的实际问题的答案将是显而易见的。 -
但我想我不能改变类型。旧的 Java 程序现在正在运行。我不确定更改后旧程序能否正常运行。
-
如果您需要使用该架构,那很糟糕,但请继续使用。但我的评论应该仍然有助于回答您的问题。
-
好的,让我在测试条件下试一试。谢谢。