MySql

字符串格式 : 

 server=localhost;Database=SqlSugar4xTest;Uid=root;Pwd=haosql;
 //有些服务器防火墙有问题需要加上 min pool size=1 避免认为是恶意请求

说明:

如果用到bulkCopy需要加: AllowLoadLocalInfile=true

远程服务器 : 加上 min pool size等于1在一些外部服务器兼容比较好


如果ORM连接不上数据库:
请使用原生写法测试:new   MySqlConnection("字符串").Open(); 原生写法通过ORM就能用

如果是偶发情况:那么就使用SqlSugarScope 单例模式保证线程安全或者排查线程问题



1、date/time 错误

Unable to convert MySQL date/time value to System.DateTime

 解决办法3选1:

 1、将该字段的缺省值设置为null,而不是0000-00-00/0000-00-00 00:00:00的情况;

 2、在链接MySQL的字符串中添加:Convert Zero Datetime=True 或者 Allow Zero Datetime=True两个属性;

 3、将该字段设置成字符串类型;


2、MySql 插入表情 emoji

 2.1 连接字符串配置

 CharSet=utf8mb4;

 2.2 ORM推荐写法

//插入推荐写法,单条插入用默认就可以
db.Insertable(List<实体>).UseParameter().ExecuteCommand()//5.0.3.8-Preview及以上版本支持

//bulkCopy
db.Fastest<Order>().SetCharacterSet("utf8mb4").BulkCopy(list1x)

 2.3 数据库配置

修改database字符集

ALTER DATABASE 数据库名 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;

修改table字符集

ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

修改column字符集

ALTER TABLE 表名 CHANGE 字段名 字段名 该字段原来的数据类型 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;


3、MySql插入时间带毫秒

 5.1 版本要求

  .net framework 4.5.2     

  需要安装MySql.Data 8.0以上版本  
  . net core 2.0+  
  驱动会自动安装
 5.2 用法
[SugarColumn(ColumnDataType = "DATETIME(3) ")]
public DateTime CreateTime { get; set; }

驱动的DataReader.GetDateTime()是不支持查出毫秒的,所以你要查毫秒代码需要这么处理:

Select(it=>new {
           CreateTime=it.CreateTime.ToString() //转成string就能查出带毫秒的时间
         });
 5.3  .net framework 4.5.2  以下版本用法
[SugarColumn(ColumnDataType = "DATETIME(3) ")]
public  string CreateTime { get; set; } //直接用string


4、MYSQL 禁用NVarchar

特殊服务器不支持 N'xx' 这种 Narchar插入

MySQL表情可能也不能使用N进行插入

 DbType = SqlSugar.DbType.MySql,
    ConnectionString = Config.ConnectionString,
    InitKeyType = InitKeyType.Attribute,
    IsAutoCloseConnection = true,
    MoreSettings=new ConnMoreSettings() {
         DisableNarvchar=true //这里设置为true
    },


5、 MySql用户自定义SQL变量

在连接字符串里面加上 Allow User Variables=True


6、tinyint(1)

不是bool不要用这个类型,驱动会解析成bool,会导致计算结果错误


7、MySql bulkcopy

出现错误:The used command is not allowed with this MySQL version

出现错误: Loading local data is disabled; this must be enabled on both the client and server sides

解决方案:

1、需要添加配置 AllowLoadLocalInfile=true

2、如果添加了配置还报这个错 去MYSQL数据库执行:SET GLOBAL local_infile=1


8、The given key错误

The given key '23111' was not present in the dictionary

1、检查连接字符串是否正确

2、如果版本MySql  

独立安装MySql.Data  8.0.29 或者安装SqlSugar到最新版本

文档:SqlSugar5.0