Невозможно подключиться к любому из указанных узлов mysql. С# MySQL

Я получаю вышеуказанную ошибку при выполнении кода -

MySqlConnection mysqlConn=new MySqlConnection("server=127.0.0.1;uid=pankaj;port=3306;pwd=master;database=patholabs;");
        mysqlConn.Open();

Я попытался установить сервер на localhost, пользователь root, но я получаю следующую ошибку -

Error: 0 : Unable to connect to any of the specified MySQL hosts.
System.Transactions Critical: 0 : <TraceRecord xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord" Severity="Critical"><TraceIdentifier>http://msdn.microsoft.com/TraceCodes/System/ActivityTracing/2004/07/Reliability/Exception/Unhandled</TraceIdentifier><Description>Unhandled exception</Description><AppDomain>DBSync.exe</AppDomain><Exception><ExceptionType>MySql.Data.MySqlClient.MySqlException, MySql.Data, Version=6.7.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d</ExceptionType><Message>Unable to connect to any of the specified MySQL hosts.</Message><StackTrace>
at  MySql.Data.MySqlClient.NativeDriver.Open()
at MySql.Data.MySqlClient.Driver.Open()
at MySql.Data.MySqlClient.Driver.Create(MySqlConnectionStringBuilder settings)
at MySql.Data.MySqlClient.MySqlPool.CreateNewPooledConnection()
at MySql.Data.MySqlClient.MySqlPool.GetPooledConnection()
at MySql.Data.MySqlClient.MySqlPool.TryToGetDriver()
at MySql.Data.MySqlClient.MySqlPool.GetConnection()
at MySql.Data.MySqlClient.MySqlConnection.Open()
at DBSync.MainForm.BtnCalculateClick(Object sender, EventArgs e) in c:\Documents  and Settings\Test01\My Documents\SharpDevelop Projects\DBSync\DBSync\MainForm.cs:line 51
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message&amp;amp; m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message&amp;amp; m)
at System.Windows.Forms.ButtonBase.WndProc(Message&amp;amp; m)
at System.Windows.Forms.Button.WndProc(Message&amp;amp; m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&amp;amp; m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&amp;amp; m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG&amp;amp; msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
at DBSync.Program.Main(String[] args) in c:\Documents and Settings\Test01\My Documents\SharpDevelop Projects\DBSync\DBSync\Program.cs:line 27</StackTrace><ExceptionString>MySql.Data.MySqlClient.MySqlException (0x80004005): Unable to connect to any of the specified MySQL hosts.
at MySql.Data.MySqlClient.NativeDriver.Open()
at MySql.Data.MySqlClient.Driver.Open()
at MySql.Data.MySqlClient.Driver.Create(MySqlConnectionStringBuilder settings)
at MySql.Data.MySqlClient.MySqlPool.CreateNewPooledConnection()
at MySql.Data.MySqlClient.MySqlPool.GetPooledConnection()
at MySql.Data.MySqlClient.MySqlPool.TryToGetDriver()
at MySql.Data.MySqlClient.MySqlPool.GetConnection()
at MySql.Data.MySqlClient.MySqlConnection.Open()
at DBSync.MainForm.BtnCalculateClick(Object sender, EventArgs e) in c:\Documents and Settings\Test01\My Documents\SharpDevelop Projects\DBSync\DBSync\MainForm.cs:line 51
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message&amp;amp; m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message&amp;amp; m)
at System.Windows.Forms.ButtonBase.WndProc(Message&amp;amp; m)
at System.Windows.Forms.Button.WndProc(Message&amp;amp; m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&amp;amp; m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&amp;amp; m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG&amp;amp; msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
at DBSync.Program.Main(String[] args) in c:\Documents and Settings\Test01\My Documents\SharpDevelop Projects\DBSync\DBSync\Program.cs:line 27</ExceptionString><DataItems><Data><Key>Server Error Code</Key><Value>1042</Value></Data></DataItems></Exception></TraceRecord>

Я могу подключиться к серверу mysql через workbench mysql и запросить базу данных. Только код не работает. Изменить: я заметил, что ошибка возникает, когда я использую sharpdevelop, а не когда я использую Visual Studio.

Ответ 1

Иногда задаются интервалы и порядок параметров в строке соединения (на основе личного опыта и долгой ночи: S)

Итак, придерживайтесь стандартного формата здесь

Сервер = myServerAddress; Port = 1234; Database = MyDatabase; Uid = MyUserName; PWD = MyPassword;

Ответ 2

Так как это лучший результат в Google:

Если ваше соединение работает изначально, но вы начинаете видеть эту ошибку после многих успешных соединений, это может быть this issue.

Вкратце: если вы открываете и закрываете соединение, Windows резервирует порт TCP для будущего использования по какой-то глупой причине. После этого много раз, у него заканчиваются доступные порты.

В статье приведен взлом реестра, чтобы исправить проблему...

Вот мои настройки реестра в XP/2003:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\MaxUserPort 0xFFFF (DWORD)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\MaxUserPort\TcpTimedWaitDelay 60 (DWORD)

Вам нужно создать их. По умолчанию они не существуют.

В Vista/2008 вы можете использовать netsh, чтобы изменить его на что-то вроде:

netsh int ipv4 set dynamicport tcp start=10000 num=50000

... но решение реального состоит в использовании пула соединений, так что "открытие" соединения действительно повторно использует существующее соединение. Большинство фреймворков делают это автоматически, но в моем случае приложение обрабатывало соединения вручную по какой-либо причине.

Ответ 3

Я запускаю mysql на компьютере в локальной сети. MySQL Workbench может подключаться к этому серверу, но не к коду С#. Я решил проблему, отключив от клиента vpn, который был запущен.

Ответ 4

Обновите строку подключения, как показано ниже (без переменной port):

MysqlConn.ConnectionString = "Server=127.0.0.1;Database=patholabs;Uid=pankaj;Pwd=master;"

Надеюсь, что это поможет...

Ответ 5

Иногда может возникнуть проблема с брандмауэром Windows, убедитесь, что ваш сервер разрешает доступ ко всем портам, связанным с вашей базой данных mysql.

Ответ 6

используйте SqlConnectionStringBuilder для упрощения соединения

System.Data.SqlClient.SqlConnectionStringBuilder builder = new System.Data.SqlClient.SqlConnectionStringBuilder();
builder["Initial Catalog"] = "Server";
builder["Data Source"] = "db";
builder["integrated Security"] = true;
string connexionString = builder.ConnectionString;
SqlConnection connexion = new SqlConnection(connexionString);
try { connexion.Open(); return true; }
catch { return false; }

Ответ 7

Просто столкнулся с той же проблемой. Установка платформы .NET на целевой машине решила проблему.

Еще лучше, убедитесь, что все необходимые зависимости присутствуют на машине, где будет работать код.

Ответ 8

для пользователей, работающих под управлением VS2013

В окнах 10.

Проверьте, запущена ли служба apache. поскольку он заменяется всемирным веб-сервисом.

запустите netstat -n, чтобы проверить это.

остановить службу. начать апач. перезапустите службу.

Ответ 9

У меня была такая же ошибка.

Вот что вам нужно сделать:

Если вы используете MAMP, закройте свой сервер. Затем нажмите кнопку настроек, когда вы снова откроете MAMP (прежде чем перезагружать сервер, конечно).

Затем вам нужно будет щелкнуть вкладку портов и нажать кнопку "Установить порт Web и MySQL на 80 и 3306".

Ответ 10

Попробуйте следующее:

MySqlConnectionStringBuilder conn_string = new MySqlConnectionStringBuilder();
conn_string.Server = "127.0.0.1";
conn_string.Port = 3306;
conn_string.UserID = "root";
conn_string.Password = "myPassword";
conn_string.Database = "myDB";



MySqlConnection MyCon = new MySqlConnection(conn_string.ToString());

try
{
    MyCon.Open();
    MessageBox.Show("Open");
    MyCon.Close();
    MessageBox.Show("Close");
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}

Ответ 11

Если вы обращаетесь к действующей базе данных по локальному URL-адресу, это не будет работать. Разверните свою службу или веб-сайт в IIS и создайте URL-адрес, а затем получите доступ к базе данных, используя новый URL-адрес. Это будет работать.

Ответ 12

В моем случае, удалив часть "port = 3306;" из строки подключения решена проблема.

Ответ 13

В моем случае у хостинга был белый список для удаленного подключения к MySql. Попробуйте добавить свой IP в белый список в панели администратора хостинга.

Ответ 14

using System;
using System.Linq;
using MySql.Data.MySqlClient;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {

            // add here your connection details
            String connectionString = "Server=localhost;Database=database;Uid=username;Pwd=password;";
            try
            {
                MySqlConnection connection = new MySqlConnection(connectionString);
                connection.Open();

                Console.WriteLine("MySQL version: " + connection.ServerVersion);
                connection.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
            Console.ReadKey();
        }
    }
}

убедитесь, что ваш сервер базы данных запущен, если он не запущен, а затем он не может подключиться, а bydefault mysql работает на 3306, поэтому не нужно упоминать порт, если он тот же, если номер порта отличается, тогда нам нужно указать порт