导言
好好写着代码,结果在测试接口时候报“unknown column 'reportuserid' ,之后找了半天,最后发现是个明显的小错误,一时红温,现寄下来当黑历史和教训吧。
涉及错误的内容
实体
namespace Meiam.System.Model
{
///<summary>
///设备使用记录定义
///</summary>
[SugarTable("Base_Equipment")]
public class Base_MaintenanceRecord
{
public Base_MaintenanceRecord()
{
}
/// <summary>
/// 描述 : 设备维修ID
/// 空值 : False
/// 默认 :
/// </summary>
[Display(Name = "设备维修ID")]
[SugarColumn(IsPrimaryKey=true)]
public string ID {get;set;}
/// <summary>
/// 描述 : 设备ID
/// 空值 : True
/// 默认 :
/// </summary>
[Display(Name = "设备ID")]
public string EquipID {get;set;}
/// <summary>
/// 描述 : 申报人ID
/// 空值 : False
/// 默认 :
/// </summary>
[Display(Name = "申报人ID")]
public string ReportUserID { get; set; }
/// <summary>
/// 描述 : 维修人名字
/// 空值 : False
/// 默认 :
/// </summary>
[Display(Name = "维修人名字")]
public string MaintenanceUser { get; set; }
/// <summary>
/// 描述 : 审核描述
/// 空值 : True
/// 默认 :
/// </summary>
[Display(Name = "审核描述")]
public string AuditDescription { get; set; }
/// <summary>
/// 描述 : 报修描述
/// 空值 : True
/// 默认 :
/// </summary>
[Display(Name = "报修描述")]
public string ReportDiscription { get; set; }
/// <summary>
/// 描述 : 维修完毕描述
/// 空值 : True
/// 默认 :
/// </summary>
[Display(Name = "维修完毕描述")]
public string MaintenanceDiscription { get;set;}
/// <summary>
/// 描述 : 状态
/// 空值 : False
/// 默认 :
/// </summary>
[Display(Name = "状态")]
public int Status { get;set;}
/// <summary>
/// 描述 : 开始维修时间
/// 空值 : False
/// 默认 :
/// </summary>
[Display(Name = "开始维修时间")]
public DateTime StartTime {get;set;}
/// <summary>
/// 描述 : 维修完毕时间
/// 空值 : False
/// 默认 :
/// </summary>
[Display(Name = "维修完毕时间")]
public DateTime EndTime {get;set;}
/// <summary>
/// 描述 : 创建人编码
/// 空值 : False
/// 默认 :
/// </summary>
[Display(Name = "创建人编码")]
public string CreateID { get; set; }
/// <summary>
/// 描述 : 创建人
/// 空值 : False
/// 默认 :
/// </summary>
[Display(Name = "创建人")]
public string CreateName { get; set; }
/// <summary>
/// 描述 : 更新人编码
/// 空值 : False
/// 默认 :
/// </summary>
[Display(Name = "更新人编码")]
public string UpdateID { get; set; }
/// <summary>
/// 描述 : 更新人
/// 空值 : False
/// 默认 :
/// </summary>
[Display(Name = "更新人")]
public string UpdateName { get; set; }
}
}
DTO
public class MaintenanceRecordDto
{
/// <summary>
/// 描述 : 维修设备ID
/// 空值 : False
/// 默认 :
/// </summary>
[Display(Name = "维修设备ID")]
[Required(ErrorMessage = "维修设备ID")]
public string EquipID { get; set; }
/// <summary>
/// 描述 : 申报人ID
/// 空值 : False
/// 默认 :
/// </summary>
[Display(Name = "申报人ID")]
[Required(ErrorMessage = "申报人ID")]
public string ReportUserID { get; set; }
/// <summary>
/// 描述 : 报修描述
/// 空值 : True
/// 默认 :
/// </summary>
[Display(Name = "报修描述")]
public string ReportDiscription { get; set; }
}
数据库表
DROP TABLE IF EXISTS `Base_MaintenanceRecord`;
CREATE TABLE `Base_MaintenanceRecord` (
`ID` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '设备维修id',
`EquipID` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '设备Id',
`ReportUserID` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '申报人ID',
`MaintenanceUser` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT '维修人名字',
`AuditDescription` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '审核描述',
`ReportDiscription` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '报修描述',
`MaintenanceDiscription` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '维修完毕描述',
`Status` int(10) NOT NULL COMMENT '状态 -1审批中 0未通过 1通过 2已完成',
`StartTime` datetime NOT NULL COMMENT '开始维修时间',
`EndTime` datetime NOT NULL COMMENT '维修完毕时间',
`CreateID` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '创建人编码',
`CreateName` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '创建人',
`UpdateID` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '更新人编码',
`UpdateName` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '更新人',
PRIMARY KEY (`ID`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '设备维修记录定义' ROW_FORMAT = Compact;
排查过程
过程
1)对比了DTO,实体,数据库有关字段是否一致,查后发现一样
2)问了gpt说可以用sqlsugar打印sql语句,看了看也没什么问题
3)网上搜资料,看说可能是建表语句有错误(字段有空格,建表用来中文符号等等),看了下也没问题
4)最后仔细检查了实体,发现[SugarTable("Base_Equipment")]中表名写错了........
解决
把实体中的
[SugarTable("Base_Equipment")]改成
[SugarTable("Base_MaintenanceRecord")]就行
原因分析及收获
原因
我再在写新的实体,接口都喜欢直接复制一个现有的再改,结果这次是没有改完全,且没有明显的报错。
收获
直接复制来改时一定要注意把原来可能影响的东西改好,无论是注释还是符号......还有就是排查错误时如果已经确定不是这个原因引起的就没必要再反复测了,应该拓展着来想想错误处在哪,这个就是,只对比了字段,结果明显的表名都没检查。
感觉还是自己的思维有些局限,即不够细心导致的。

被折叠的 条评论
为什么被折叠?



