mysql - Beego QueryRows 映射失败
问题描述
beego的映射规则是什么Raw().QueryRows()
这是我使用的结构:
type ProcessingNetworkDataProviderConfig struct {
Id int
NetworkId int
DataProviderId int
DistributorId int
EnableTargeting int
EnableReporting int
UsePrivateData int
UseExternalUserId int
UseUserMapping int
UseUserAttributes int
UserExchangeUrl string
EnableCache int
EnableBloomFilter int
EnableDisplayAds int
EnableResellerMode int
EnableVisitorReporting int
Nsql string
MaxSegmentNumber int
ExpirationDays int
DeltaIngest int
Pkg int
Trackednum int
Comment string
ProcessingStatus string
}
这是 MySQL ( desc processing_network_data_provider_config
) 中的表:
+--------------------------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------------------+---------------+------+-----+---------+----------------+
| id | bigint(20) | NO | PRI | NULL | auto_increment |
| network_id | bigint(20) | NO | MUL | NULL | |
| data_provider_id | bigint(20) | NO | MUL | NULL | |
| distributor_id | bigint(20) | YES | MUL | NULL | |
| enable_targeting | tinyint(1) | NO | | 0 | |
| enable_reporting | tinyint(1) | NO | | 0 | |
| use_private_data | tinyint(1) | NO | | 0 | |
| use_external_user_id | tinyint(1) | NO | | 0 | |
| use_user_mapping | tinyint(1) | NO | | 0 | |
| use_user_attributes | tinyint(1) | NO | | 1 | |
| user_exchange_url | varchar(255) | YES | | NULL | |
| enable_cache | tinyint(1) | NO | | 1 | |
| enable_bloom_filter | tinyint(1) | NO | | 0 | |
| enable_display_ads | tinyint(1) | NO | | 1 | |
| enable_reseller_mode | tinyint(1) | NO | | 0 | |
| enable_visitor_reporting | tinyint(1) | NO | | 1 | |
| Nsql | varchar(2000) | YES | | NULL | |
| seg_num | int(11) | YES | | NULL | |
| exp_date | int(11) | YES | | NULL | |
| delta_ingest | tinyint(1) | YES | | NULL | |
| package | tinyint(1) | YES | | NULL | |
| tracked_num | int(11) | YES | | NULL | |
| Comment | varchar(2000) | YES | | NULL | |
| ProcessingStatus | varchar(30) | YES | | NULL | |
+--------------------------+---------------+------+-----+---------+----------------+
我用它来读取数据库:
var tt []*ProcessingNetworkDataProviderConfig
sql := `SELECT * FROM processing_network_data_provider_config`
if _, err := o.Raw(sql).QueryRows(&tt); err != nil {
fmt.Println("fff wo")
beego.Error("Error when querying network configuration: ", err.Error())
}
fmt.Println(tt[0])
输出是:
&{49 1271 1 -1 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 }
但是,这里面应该有一些字符串,它们在哪里?我想这是映射规则使其失败,对吗?
解决方案
https://beego.me/docs/mvc/model/models.md
根据命名约定,您的结构字段名称将转换为snake_case 用于您的数据库架构,我注意到架构中的“ProcessingStatus”。所以我相信你有 2 个选择:
1. 将“ProcessingStatus”列重命名为 snake_case
2. 对 struct 标签使用特殊映射:
ProcessingStatus string `orm:"column(processing_status)"
推荐阅读
- mysql - 为 mySQL 设置全局变量
- sql - 如何将 BigQuery 中的字符串分成多列而不分解不同的单词?
- opentest - 我们可以在不同的机器上拥有测试 repo 目录和 opentest 服务器吗?
- python - 有没有机会让它更快?(numpy.einsum)
- python - matplotlib FuncAnimation 不会在按钮按下小部件事件时启动
- python - `peewee`如何获取外键的父模型
- codeigniter - Codeigniter:错误不能使用 CI_DB_mysqli_result 类型的对象作为数组
- html - 如何使图标和按钮具有相同的ID?
- javascript - 数组未在地图内呈现
- javascript - 我想要一种方法来使用另一个html代码在同一页面上调用js中存在的html代码