初级会员
  • 第 76305 位会员
  • pika623
  • 皮卡丘
  • 2022-11-22 10:09:25
  • Offline
  • 26 27

最近发布的文章

    暂无

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • 经过3楼大佬的提醒,对比xorm和gorm建表的语句确实不一样。 xorm ![image.png](https://static.golangjob.cn/221123/ccb5edfe6b0c647b857b7eaee0244dfd.png) gorm ![image.png](https://static.golangjob.cn/221123/caf4844b1b001197c0a62fad3c01c059.png) 但是按照xorm官方文档中的属性定义介绍,定义的结构体也是没有问题的。 直到看到了官方文档(http://xorm.topgoer.com/chapter-02/4.columns.html)中属性定义中的最后一个表格: ![image.png](https://static.golangjob.cn/221123/f28b42bb8a64c562b1a4c456da01f8b7.png) 猜测可能是xorm严格按照sqlite支持的字段类型将VARCHAR转换成了TEXT,所以建表语句中的类型就变为了TEXT。 仔细查看xorm源代码发现:当数据库为sqlite时根据结构体建表,构造sql语句时会调用SQLType()函数 ,此函数将VARCHAR转换成了TEXT。 ![image.png](https://static.golangjob.cn/221123/2fa3156869beeaae5128e19f4a293684.png)
  • #3 @jan-bar 好的 感谢 我瞅瞅
  • #1 @jan-bar 可是如果使用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代替**