MySQL , MariaDB, Percona Server, Amazon Aurora, Azure Database for MySQL, Google Cloud SQL for MySQL, OceanBase
注意:个别特殊的数据库需要禁用Nvarchar(标题4)
字符串格式 :
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 单例模式保证线程安全或者排查线程问题
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、将该字段设置成字符串类型;
CharSet=utf8mb4;
//插入推荐写法,单条插入用默认就可以 db.Insertable(List<实体>).UseParameter().ExecuteCommand()//5.0.3.8-Preview及以上版本支持 //bulkCopy db.Fastest<Order>().SetCharacterSet("utf8mb4").BulkCopy(list1x)
修改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;
.net framework 4.5.2 | 需要安装MySql.Data 8.0以上版本 |
. net core 2.0+ | 驱动会自动安装 |
[SugarColumn(ColumnDataType = "DATETIME(3) ")] public DateTime CreateTime { get; set; }
驱动的DataReader.GetDateTime()是不支持查出毫秒的,所以你要查毫秒代码需要这么处理:
Select(it=>new { CreateTime=it.CreateTime.ToString() //转成string就能查出带毫秒的时间 });
[SugarColumn(ColumnDataType = "DATETIME(3) ")] public string CreateTime { get; set; } //直接用string
特殊服务器不支持 N'xx' 这种 Narchar插入
MySQL表情可能也不能使用N进行插入
DbType = SqlSugar.DbType.MySql, ConnectionString = Config.ConnectionString, InitKeyType = InitKeyType.Attribute, IsAutoCloseConnection = true, MoreSettings=new ConnMoreSettings() { DisableNarvchar=true //这里设置为true },
在连接字符串里面加上 Allow User Variables=True
不是bool不要用这个类型,驱动会解析成bool,会导致计算结果错误
出现错误: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
The given key '23111' was not present in the dictionary
1、检查连接字符串是否正确
2、如果版本MySql
独立安装MySql.Data 8.0.29 或者安装SqlSugar到最新版本
db.Insertable(insertObj).MySqlIgnore().ExecuteCommand();//5.1.4.59+
连接字符串加上 ;Pooling=false; 可以解决
原因: 用Ado.net模拟错误
var conn=new MySqlConnection(字符串); conn.Open(); conn.Close(); //同一个连接第二次Open就会出来,出现这种情况 Pooling=false 会close后清空这个连接池, //所以在次Open就不会有影响了 conn.Open();
方案1:字符串上加 Pooling=false (自动释放模式)
方案2: using(var db=new sqlsugarclient(手动释放模式)){ 。。 } 保证同一个db只会close一次
2016 © donet5.comApache Licence 2.0