结构体示例:
```go
type CsTable struct {
Id int64 `xorm:"pk autoincr"`
Name string `xorm:"varchar(40) notnull unique"`
Type string `xorm:"varchar(40)"`
Remark string `xorm:"varchar(1024)"`
}
```
根据此结构体建表代码
```go
err = engine.Sync2(new(CsTable))
```
运行后用Navicat查看新建的表
![image.png](https://static.golangjob.cn/221122/d87a1ad4f1e4979decdd0440967a54d0.png)
**为什么字段类型与长度与结构体定义不符?**
尝试用gorm根据结构体建sqlite表,字段类型与长度与结构定义相符合。但是更希望能找到xorm的解决方案。
哪位大佬能帮忙解答一下,感谢!
可是如果使用gorm的话是可以的
结构体示例:
```go
type CsTable struct {
Id int64 `gorm:"primarykey"`
Name string `gorm:"type:varchar(40);not null;unique"`
Type string `gorm:"type:varchar(40)"`
Remark string `gorm:"type:varchar(1024)"`
}
```
根据此结构体建表代码
```go
engine.AutoMigrate(&model.CsTable{})
```
运行后用Navicat查看新建的表
![image.png](https://static.golangjob.cn/221122/bfe79cbe846c6c998ae06fa9327cac49.png)
**em这就没有被text代替**
#2
更多评论
看看sqlite支持的类型吧,https://www.runoob.com/sqlite/sqlite-data-types.html
没有varchar吧,都是text代替。
#1
2楼 <a href="/user/pika623" title="@pika623">@pika623</a> 这是官方文档:https://sqlite.org/datatype3.html
确实只有那几种类型,我也试了`varchar(40)`也是可以的,你开启gorm的日志功能,看看gorm产生的建表语句是啥样吧。
反正实际项目中我不喜欢自动建表,感觉不可控,这不就引起了你的问题嘛:smiley:
#3