Mysql 脚本在执行耗时较长的查询后挂起

Mysql 脚本在执行耗时较长的查询后挂起,mysql,powershell,Mysql,Powershell,我在PowerShell中遇到了一个脚本问题,该脚本在执行MySQL SELECT查询后挂起,执行该脚本需要10分钟以上的时间 $query=选择S.DESCRIPTION,date\u format n.TIMESTAMP,'%H',count* 从通知N,发送\u类型S 其中N.ID\u发送类型=S.ID\u发送类型 和N.TIMESTAMP>date_格式“+$fecha+”,“%Y%m%d” 按S.描述、日期格式、时间戳、%H'分组 示例-$fecha=20170630 我用我的函数执行

我在PowerShell中遇到了一个脚本问题,该脚本在执行MySQL SELECT查询后挂起,执行该脚本需要10分钟以上的时间

$query=选择S.DESCRIPTION,date\u format n.TIMESTAMP,'%H',count* 从通知N,发送\u类型S 其中N.ID\u发送类型=S.ID\u发送类型 和N.TIMESTAMP>date_格式“+$fecha+”,“%Y%m%d” 按S.描述、日期格式、时间戳、%H'分组 示例-$fecha=20170630

我用我的函数执行查询,这里是PowerShell挂起的地方

$resultado=Get QueryMysql-Servidor$MySQLHost-Port$Port-UserName$MySQLAdminUserName-Password$MySQLAdminPassword-DataBase$MySQLDatabase-Query$Query 下面是函数Get QueryMysql:

函数Get QueryMysql{ [CmdletBinding] [别名] [输出类型[int]] Param 施维多Mysql [ParameterMandatory=$true] [字符串]$Servidor, 甲骨文港 [ParameterMandatory=$true] [字符串]$Port, 服务名 [ParameterMandatory=$true] [String]$DataBase, 乌萨里奥 [ParameterMandatory=$true] [字符串]$UserName, 暗语 [ParameterMandatory=$true] [字符串]$Password, 查询 [ParameterMandatory=$true] [String]$Query, 如果允许零日期时间 [参数强制性=$false] [开关]$AllowZeroDateTime, 雷恩托斯 查询 [参数强制性=$false] [int]$Reinentos=10, [开关]$AntiguoMysql 开始{ 加载ODP程序集 如果$AntiguoMysql.IsPresent{ 添加类型-Path C:\TRABAJO\REPORTES\modules\MySQL\MySQL.data.dll-IgnoreWarnings }否则{ $null=[System.Reflection.Assembly]::LoadWithPartialNameMySql.Data } } 过程{ 康涅西翁学院 $ConnectionString=server=+$Servidor+;port=$port;uid=+$UserName+;pwd=+$Password+;database=+$database 如果$AllowZeroDateTime.IsPresent{ $ConnectionString=server=+$Servidor+;port=$port;uid=+$UserName+;pwd=+$Password+;database=+$database+;Allow Zero Datetime=True } $cont=0 对于$i=0;$i-lt$reinentos;$i++{ $MysqlConnection=新对象MySql.Data.MySqlClient.MysqlConnection $MysqlConnection.ConnectionString=$ConnectionString $MysqlConnection.Open $Command=新对象MySql.Data.MySqlClient.MySqlCommand$Query,$MysqlConnection $DataAdapter=新对象MySql.Data.MySqlClient.MySqlDataAdapter$命令 $DataSet=新对象System.Data.DataSet $RecordCount=$dataAdapter.Fill$DataSet,数据 如果$DataSet{ 打破 } } 如果!$dataSet{ 写入主机错误:Conectando a la BBDD 返回$null } 拿督 返回$DataSet.Tables[0] } 结束{ 塞兰多锥虫 如果$MysqlConnection{ $MysqlConnection.Close $MysqlConnection.Dispose } } } 查询是一个按时间戳字段过滤的选择字段。我试图更改表的结构,但我在生产环境中的要求被拒绝。所以我需要做的是让我的脚本正常工作,我只会遇到需要很长时间的查询问题

我尝试使用脚本块命令,但它不起作用

当进程执行时,cpu为0.5%,20 mb的ram没有增量

当我从DBMS Navicat执行查询时,需要10分钟,在某些情况下甚至更长。我用ShowProcessList检查了MySQL数据库,脚本执行的查询在几分钟后成功完成,但PowerShell脚本挂起

执行以下行后,脚本挂起:

$RecordCount=$dataAdapter.Fill$dataSet,数据 加载另一个连接器后:

[void][system.reflection.Assembly]::LoadFromC:\modules\MySQL\6.9.8\MySQL.data.dll 脚本没有挂起,但现在发生了一个错误异常:

异常填充参数2:在命令执行期间遇到致命错误。 +$RecordCount=$dataAdapter.Fill$dataSet,数据 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +CategoryInfo:NotSpecified::[],MethodInvocationException +FullyQualifiedErrorId:MySqlException 在数据库中查看超时变量,设置为8小时:

交互超时=28800 等待超时=28800 SHOW PROCESSLIST命令显示连接处于发送数据状态


只有当查询超过1分钟或更长时间时,才会发生错误异常

@Steve_MSFT在推特上回答了这个问题: