2013-08-01 2 views
8

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

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

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

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.

ответ

9

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

Так придерживаться стандартного формата here

Server = myServerAddress; Port = 1234; Database = MyDatabase; Uid = myUsername; PWD = MyPassword;

+0

Doesnt работа для меня – Signcodeindie

0

использование 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; } 
+1

я строка подключения строитель и по-прежнему не работает. –

+0

В чем проблема? –

+0

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

0

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

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

-1
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, так что не нужно упоминания порта, если же в случае номер порта отличается, то нам нужно упомянуть порт

6

Поскольку это первый результат на 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 

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

0

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

В окнах 10.

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

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

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

+0

, так как служба является постоянной, как я заметил, Мне нужно запустить это в командной строке каждый раз, когда перезагрузите, пока я не найду лучшее решение. ** net stop w3SVC ** ** net start apache2.4 (в зависимости по версии) ** – gondwe

2

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

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

Надеется, что это помогает ...

1

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

+2

Забавный. У меня была такая же проблема снова, был поиск в Google, нашел мой собственный пост (не обращая внимания на кто опубликовал). Он снова решил мою проблему. Собирался повышать :) – Jimmy

+1

Активировано от вашего имени. Я делал это несколько раз. Спасибо, прошло мимо меня. – Joshua

+1

Ха-ха! Спасибо нынешнему Джошуа. – Jimmy

0

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

0

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

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

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

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

0

Попробуйте это:

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); 
} 
Смежные вопросы