mysql报错2019_MySql报错(持续更新)

MySql报错

1. 重复键报错1062- duplicate entry ‘0’ for key ‘xxx’

1.1 报错场景

在建立索引的时候报此错误。

1.2 报错原因

索引或者主键有重复键

1.3 解决方法

删除重复的索引或者主键条目,即可。

1.4 具体举例

给MAC建立索引表的时候,会报此错误,原因是原表中有重复键0,删除一个即可。

c39a4006db716fa3450de7c7e01bfcc8.png

2. VS2019 nuget控制台类型不匹配报错

2.1 报错描述如下

Could not find type mapping for column ‘alarms.id’ with data type ‘int unsigned zerofill’. Skipping column.

Could not scaffold the primary key for ‘alarms’. The following columns in the primary key could not be scaffolded: id.

Unable to generate entity type for table ‘alarms’.

2.2 报错场景

对接数据库是Mysql,使用VS2019 nuget控制台指令进行Dbfirst。在Dbfirst生成字段的时候,报此错误,无法生成对应表的字段。

2.3 报错原因

数据库侧对主键设置了无符号,填充零。

2.4 解决方法

使用Navicat管理Mysql,取消无符号,填充零。

6f0f4aaefe69adf0913ecd57c3bcf8cf.png

3 数据库Varchar类型为空返回DBnull与服务端string类型不匹配报错

3.1 报错描述如下

System.InvalidCastException: Unable to cast object of type ‘System.DBNull’ to type ‘System.String’.

3.2 报错场景

服务程序字段类型为string, 数据库类型为varchar。当数据库为空的时候,返回DBnNull,与服务端String类型不匹配报错。

2.3 报错原因

类型不匹配

2.4 解决方法1

2.4.1 将数据库中为空的字段写入数据

2.4.2 当数据库返回DBNull时,将返回数据改成Null,网上有很多类似例子。

return (accountNumber == DBNull.Value) ? string.Empty : accountNumber.ToString()

备注:适合单条对象不匹配

2.4.3 配置文件Map里取消非空设置

builder.Property(c => c.AlarmName)

.HasColumnType("varchar(40)")

.HasMaxLength(40);

// .IsRequired();

builder.Property(c => c.AlarmType)

.HasColumnType("varchar(20)")

.HasMaxLength(20);

// .IsRequired();

备注:适合整个集合的不匹配

2.5 解决方法2(最优)

2019/8/6日更新。

public string? HKID { get; set; }

C#中加个可空类型即可完美解决问题。

作者:JerryMouseLi

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值