mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-04-05 17:37:58 +08:00
Update MySqlConnector
This commit is contained in:
parent
a37a945950
commit
55c6c91658
@ -153,6 +153,13 @@ namespace SqlSugar.MySqlConnector
|
||||
return "alter table {0} change column {1} {2}";
|
||||
}
|
||||
}
|
||||
protected override string IsAnyProcedureSql
|
||||
{
|
||||
get
|
||||
{
|
||||
return "select count(*) from information_schema.Routines where ROUTINE_NAME='{0}' and ROUTINE_TYPE='PROCEDURE'";
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Check
|
||||
@ -297,7 +304,7 @@ namespace SqlSugar.MySqlConnector
|
||||
public override bool IsAnyColumnRemark(string columnName, string tableName)
|
||||
{
|
||||
var isAny=this.Context.DbMaintenance.GetColumnInfosByTableName(tableName, false)
|
||||
.Any(it => it.ColumnDescription.HasValue() && it.DbColumnName.ToLower()==columnName.ToLower());
|
||||
.Any(it => it.ColumnDescription.HasValue() && it.DbColumnName.EqualCase(columnName));
|
||||
return isAny;
|
||||
}
|
||||
public override bool AddColumnRemark(string columnName, string tableName, string description)
|
||||
|
@ -20,7 +20,7 @@ namespace SqlSugar.MySqlConnector
|
||||
try
|
||||
{
|
||||
var mySqlConnectionString = base.Context.CurrentConnectionConfig.ConnectionString;
|
||||
if (!mySqlConnectionString.ToLower().Contains("charset"))
|
||||
if (!mySqlConnectionString.ToLower().Contains("charset") && !mySqlConnectionString.ToLower().Contains("character"))
|
||||
{
|
||||
mySqlConnectionString = mySqlConnectionString.Trim().TrimEnd(';') + ";charset=utf8;";
|
||||
}
|
||||
|
@ -1,5 +1,8 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace SqlSugar.MySqlConnector
|
||||
{
|
||||
public class MySqlExpressionContext : ExpressionContext, ILambdaExpressions
|
||||
@ -66,7 +69,7 @@ namespace SqlSugar.MySqlConnector
|
||||
var parameter2 = model.Args[1];
|
||||
return string.Format(" (TIMESTAMPDIFF(day,date({0}),date({1}))=0) ", parameter.MemberName, parameter2.MemberName); ;
|
||||
}
|
||||
|
||||
|
||||
public override string DateIsSameByType(MethodCallExpressionModel model)
|
||||
{
|
||||
var parameter = model.Args[0];
|
||||
@ -173,6 +176,12 @@ namespace SqlSugar.MySqlConnector
|
||||
return "rand()";
|
||||
}
|
||||
|
||||
public override string Collate(MethodCallExpressionModel model)
|
||||
{
|
||||
var name = model.Args[0].MemberName;
|
||||
return $" binary {name} ";
|
||||
}
|
||||
|
||||
public override string CharIndex(MethodCallExpressionModel model)
|
||||
{
|
||||
return string.Format("instr ({0},{1})", model.Args[0].MemberName, model.Args[1].MemberName);
|
||||
@ -208,5 +217,28 @@ namespace SqlSugar.MySqlConnector
|
||||
{
|
||||
return $"{memberName1}->\"$.{memberName2}\"";
|
||||
}
|
||||
|
||||
public override string JsonArrayAny(MethodCallExpressionModel model)
|
||||
{
|
||||
if (SqlSugar.UtilMethods.IsNumber(model.Args[1].MemberValue.GetType().Name))
|
||||
{
|
||||
return $"JSON_CONTAINS({model.Args[0].MemberName}, '{model.Args[1].MemberValue}')";
|
||||
}
|
||||
else
|
||||
{
|
||||
return $"JSON_CONTAINS({model.Args[0].MemberName}, '\"{model.Args[1].MemberValue.ObjToStringNoTrim().ToSqlFilter()}\"')";
|
||||
}
|
||||
}
|
||||
public override string JsonListObjectAny(MethodCallExpressionModel model)
|
||||
{
|
||||
if (SqlSugar.UtilMethods.IsNumber(model.Args[2].MemberValue.GetType().Name))
|
||||
{
|
||||
return $"JSON_CONTAINS({model.Args[0].MemberName},'{{\"{model.Args[1].MemberValue}\":{model.Args[2].MemberValue}}}')";
|
||||
}
|
||||
else
|
||||
{
|
||||
return $"JSON_CONTAINS({model.Args[0].MemberName},'{{\"{model.Args[1].MemberValue}\":\"{model.Args[2].MemberValue.ObjToStringNoTrim().ToSqlFilter()}\"}}')";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -62,9 +62,14 @@ namespace SqlSugar.MySqlConnector
|
||||
{
|
||||
Check.ExceptionEasy("connection string add : AllowLoadLocalInfile=true", "BulkCopy MySql连接字符串需要添加 AllowLoadLocalInfile=true; 添加后如果还不行Mysql数据库执行一下 SET GLOBAL local_infile=1 ");
|
||||
}
|
||||
else
|
||||
else if (ex.Message == "Loading local data is disabled; this must be enabled on both the client and server sides")
|
||||
{
|
||||
throw ex;
|
||||
this.Context.Ado.ExecuteCommand("SET GLOBAL local_infile=1");
|
||||
Check.ExceptionEasy(ex.Message, " 检测到你没有开启文件,已自动执行 SET GLOBAL local_infile=1 在试一次");
|
||||
}
|
||||
else
|
||||
{
|
||||
throw;
|
||||
}
|
||||
}
|
||||
finally
|
||||
|
@ -148,6 +148,10 @@ namespace SqlSugar.MySqlConnector
|
||||
{
|
||||
result = " DISTINCT " + result;
|
||||
}
|
||||
if (this.SubToListParameters != null && this.SubToListParameters.Any())
|
||||
{
|
||||
result = SubToListMethod(result);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
@ -9,6 +9,22 @@ namespace SqlSugar.MySqlConnector
|
||||
/// </summary>
|
||||
public static class UtilExtensions
|
||||
{
|
||||
public static bool EqualCase(this string thisValue, string equalValue)
|
||||
{
|
||||
if (thisValue != null && equalValue != null)
|
||||
{
|
||||
return thisValue.ToLower() == equalValue.ToLower();
|
||||
}
|
||||
else
|
||||
{
|
||||
return thisValue == equalValue;
|
||||
}
|
||||
}
|
||||
public static string ObjToStringNoTrim(this object thisValue)
|
||||
{
|
||||
if (thisValue != null) return thisValue.ToString();
|
||||
return "";
|
||||
}
|
||||
public static int ObjToInt(this object thisValue)
|
||||
{
|
||||
int reval = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user