Как убить процесс MySQL через C #

0

Я получаю проблему "слишком много соединений" в приложении Asp.Net Mvc, которое получает исправление, когда я вручную убиваю процесс через Mysql v6.56 IDE, но на удаленном хостинговом компьютере, где я не могу убивать процесс каждый раз, как можно Я исправляю эту ошибку.

Я попытался подключиться к таблице information_schema DB PROCESSLIST, но когда при подключении собирается выполнить команду, возникает ошибка "доступ запрещен root @loclahost information_schema". Я также попытался предоставить все привилегии root @loclahost, но все же я не могу исправить эту проблему. Я кодирую то же самое с последних двух лет, но в этом приложении я получаю эту проблему, я использую каждое соединение в каждом методе. Пожалуйста, если кто-то когда-либо получил эту проблему или узнал ответ. Пожалуйста, помогите мне. Заранее спасибо

Теги:

2 ответа

3

Вам нужно закрыть соединения из своего кода, вызвав close() в ваших объектах подключения. Убийство потоков через сервер MySQL - это ужасная идея

  • 0
    Я использовал этот метод везде, где я уже написал.
  • 2
    тогда вам нужно это исправить.
Показать ещё 1 комментарий
0
' 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
  • 0
    Еще немного объяснения, что делает ваш код и как, было бы неплохо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню