繁体   English   中英

如何通过C#杀死mysql进程

[英]How to kill mysql process through C#

我在Asp .Net Mvc应用程序中遇到“连接过多”的问题,当我通过My​​sql v6.56 IDE手动终止进程时得到修复,但是在远程托管计算机上,我每次都无法终止进程如何解决此问题错误。

我尝试过建立到information_schema DB的PROCESSLIST表的连接,但是当连接要执行命令时,会出现错误“拒绝访问root @ loclahost information_schema”。 我也尝试将所有特权授予root @ loclahost,但仍然无法解决此问题。 从最近两年开始,我一直以相同的方式进行编码,但是在此应用程序中,我遇到了这个问题,我在每种方法中都使用了关闭每个连接的方法。 如果有人遇到此问题或知道答案,请帮助我。 提前感谢

您需要通过在连接对象上调用close()来关闭代码中的连接。 通过MySQL服务器杀死线程是一个可怕的主意

' code in vb.net you can convert it to c# easily
Dim ConnectionString As String = "your connection string"
Public Function KillAllMySQL() As Integer
    Dim query As String = "SHOW FULL PROCESSLIST"
    '
    Try
        Dim mySqlConnection As MySqlConnection = New MySqlConnection(ConnectionString)
        ' 2. open connection to database using connectionString
        mySqlConnection.Open()
        ' 3. Create a command to hold values
        Dim objCmd As New MySqlCommand(query, mySqlConnection)
        ' 4. Add parameters for sqlCommand
        mySqlDataReader = objCmd.ExecuteReader()
        If mySqlDataReader.HasRows Then
            Do While mySqlDataReader.Read()
                ' kill processes with elapsed time > 200 seconds and in Sleep 
                If mySqlDataReader.GetInt32(5) > 200 And mySqlDataReader.GetString(4) = "Sleep" Then
                    KillMySqlProcess("KILL " & mySqlDataReader.GetInt32(0))
                End If
            Loop
        End If
        If Not mySqlDataReader Is Nothing Then mySqlDataReader.Close()
        If Not mySqlConnection Is Nothing Then mySqlConnection.Close()
    Catch ex As MySqlException
        Return -1
    End Try
    Return 0
End Function

Public Function KillMySqlProcess(ByVal myQuery As String) As Integer
    '1. Create a query
    Dim query As String = myQuery
    '
    Try
        Dim mySqlConnection As MySqlConnection = New MySqlConnection(ConnectionString)
        ' 2. open connection to database using connectionString
        mySqlConnection.Open()
        ' 3. Create a command to hold values
        Dim objCmd As New MySqlCommand(query, mySqlConnection)
        objCmd.ExecuteNonQuery()
        mySqlConnection.Close()
    Catch ex As MySqlException
        Return -1
    End Try

    Return 0
End Function

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM