2013-08-01 13 views
8

otrzymuję powyższy błąd podczas wykonywania kodu -Nie można połączyć się z żadnym z określonych hostów mysql. C# MySQL

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

Próbowałem ustawienie serwera localhost, użytkownika do korzenia, ale pojawia się następujący 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> 

mogę połączyć się z serwerem mysql za pośrednictwem środowiska roboczego mysql i wysłać zapytanie do bazy danych. To tylko kod, który nie działa. Edycja: Zauważyłem, że błąd pojawia się, gdy używam programu narzędziowego sharpdevelop, a nie, gdy używam programu Visual Studio.

Odpowiedz

9

Czasami rozstaw i Zakon parametrów w sprawach ciąg połączenia (oparte na osobistym doświadczeniu i długiej nocy: s)

Tak trzymać się standardowego formatu here

Server = myServerAddress; Port = 1234; Database = myDataBase; Uid = myUsername; Pwd = mojeHasło;

+0

robi praca dla mnie – Signcodeindie

0

użycie SqlConnectionStringBuilder uprościć połączenia

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

użyłem String Connection budowniczym i nadal nie działa. –

+0

jaki jest dokładnie problem? –

+0

To samo. Nie można połączyć się z żadnym z określonych hostów mysql. –

0

prostu zabrakło do tego samego problemu. Zainstalowanie platformy .NET na maszynie docelowej rozwiązało problem.

Co więcej, upewnij się, że wszystkie wymagane zależności są obecne na komputerze, na którym kod będzie uruchomiony.

-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(); 
     } 
    } 
} 

upewnić się, że serwer bazy danych jest uruchomiony, jeśli jej nie pracuje wtedy jej nie stanie dokonać połączenia i bydefault mysql działa na 3306, więc nie trzeba portu wspomnieć jeśli same w przypadku numeru portu jest inna to musimy wspominając portowi

6

Ponieważ jest to top wynik w Google:

Jeśli połączenie działa początkowo, ale rozpoczęciem widząc ten błąd po wielu udanych połączeń, to może być this issue.

Podsumowując: jeśli otworzysz i zamkniesz połączenie, system Windows zarezerwuje port TCP do wykorzystania w przyszłości z jakiegoś głupiego powodu. Po wykonaniu tego wiele razy, zabraknie wolnych portów.

W artykule daje hack rejestru Aby rozwiązać ten problem ...

Oto moje ustawienia rejestru na 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) 

trzeba je stworzyć. Domyślnie nie istnieją.

na Vista/2008 można użyć narzędzia Netsh go zmienić na coś takiego:

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

...ale rozwiązanie prawdziwe polega na użyciu puli połączeń, tak aby "otwarcie" połączenia naprawdę ponownie wykorzystało istniejące połączenie. Większość frameworków robi to automatycznie, ale w moim przypadku aplikacja obsługiwała połączenia ręcznie z jakiegoś powodu.

0

dla użytkowników korzystających z VS2013

W oknach 10.

Sprawdź, czy usługa apache jest uruchomiony. ponieważ zostaje zastąpiony przez serwis WWW.

Uruchom komendę netstat -n, aby to sprawdzić.

zatrzymaj usługę. uruchom Apache. zrestartuj usługę.

+0

, ponieważ usługa jest trwała, jak zauważyłem, Muszę uruchomić to w wierszu polecenia za każdym razem zrobić restart, aż znajdę lepsze rozwiązanie ** net stop w3SVC ** ** net start apache2.4 (w zależności w wersji) ** – gondwe

2

Aktualizacja ciąg połączenia, jak pokazano poniżej (bez port zmiennej również):

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

Nadzieja to pomaga ...

1

Używam mysql na komputerze w sieci lokalnej. MySQL Workbench może połączyć się z tym serwerem, ale nie moim kodem C#. Rozwiązałem problem przez odłączenie od klienta VPN, który działał.

+2

Zabawne. Znowu miałem ten sam problem, przeszukałem go, znalazłem swój post (bez zwracania uwagi na to, kto opublikował). Znowu rozwiązał mój problem. Zamierzaliśmy zabrać głos :) – Jimmy

+1

Wznowiono w twoim imieniu. Zrobiłem to kilka razy. Dzięki za mną. – Joshua

+1

Haha! Dziękuję obecnym Joshua. – Jimmy

0

Kiedyś problem może dotyczyć zapory sieciowej systemu Windows, upewnij się, że serwer umożliwia dostęp do wszystkich portów powiązanych z bazą danych mysql.

0

Wystąpił dokładnie ten sam błąd.

Oto co trzeba zrobić:

Jeśli używasz MAMP zamknąć serwer. Następnie kliknij przycisk preferencji po ponownym otwarciu MAMP (przed ponownym uruchomieniem serwera).

Następnie należy kliknąć zakładkę Porty, a następnie kliknąć przycisk "Ustaw porty sieci i MySQL na 80 & 3306".

0

Spróbuj tego:

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); 
} 
Powiązane problemy