web-dev-qa-db-fra.com

Impossible de se connecter à l'un des hôtes mysql spécifiés. C # MySQL

Je reçois l'erreur ci-dessus lorsque j'exécute le code -

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

J'ai essayé de configurer le serveur sur localhost, l'utilisateur sur root, mais le message d'erreur suivant s'affiche:

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>

Je peux me connecter au serveur mysql via mysql workbench et interroger la base de données. Seul le code qui ne fonctionne pas .. .. Edit: J'ai remarqué que l'erreur se produit lorsque j'utilise sharpdevelop et non lorsque j'utilise Visual Studio.

11
Opax Web

Parfois, l’espacement et l’ordre des paramètres dans la chaîne de connexion importent (en fonction de l’expérience personnelle et d’une longue nuit: S)

Alors tenez-vous en au format standard ici

Server = myServerAddress; Port = 1234; Base de données = myDataBase; Uid = monUsername; Pwd = myPassword;

13
Tamim Al Manaseer

Puisque c'est le meilleur résultat sur Google:

Si votre connexion fonctionne initialement, mais que vous commencez à voir cette erreur après de nombreuses connexions réussies, il se peut que ce soit ce problème .

En résumé: si vous ouvrez et fermez une connexion, Windows réserve le port TCP pour une utilisation ultérieure pour une raison stupide. Après cela, il manque de ports disponibles.

L'article donne un hack de registre pour résoudre le problème ...

Voici mes paramètres de registre sur 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)

Vous devez les créer. Par défaut, ils n'existent pas.

Sous Vista/2008, vous pouvez utiliser netsh pour le modifier:

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

... mais la solution real consiste à utiliser le pool de connexions, de sorte que "l'ouverture" d'une connexion réutilise réellement une connexion existante. La plupart des frameworks le font automatiquement, mais dans mon cas, l'application traitait les connexions manuellement pour une raison quelconque.

J'exécute mysql sur un ordinateur sur un réseau local. MySQL Workbench peut se connecter à ce serveur, mais pas à mon code c #. J'ai résolu mon problème en me déconnectant d'un client VPN en cours d'exécution.

8
Jimmy

Si le problème se situe parfois sur votre pare-feu Windows, assurez-vous que votre serveur autorise l'accès à tous les ports associés à votre base de données mysql.

1
Johnbosco Adam

Mettez à jour votre chaîne de connexion comme indiqué ci-dessous (sans la variable port également):

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

J'espère que cela t'aides...

1
Murat Yıldız

Si vous accédez à la base de données en direct à l'aide de l'URL localhost, cela ne fonctionnera pas. Veuillez déployer votre service ou votre site Web sur IIS, créer une URL, puis accéder à la base de données à l'aide de la nouvelle URL. Cela fonctionnera.

0
chavantr

utilisez SqlConnectionStringBuilder pour simplifier la connexion 

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; }
0
Lamloumi Afif

J'avais exactement la même erreur.

Voici ce que vous devez faire:

Si vous utilisez MAMP, fermez votre serveur. Cliquez ensuite sur le bouton Préférences lorsque vous ouvrez MAMP à nouveau (avant de redémarrer votre serveur bien sûr).

Ensuite, vous devrez cliquer sur l'onglet ports, puis sur le bouton "Définir les ports Web et MySQL sur 80 et 3306".

0
justinpees

pour les utilisateurs de VS2013

Dans les fenêtres 10. 

Vérifiez si le service Apache est en cours d'exécution. car il est remplacé par le service World Wide Web. 

lancez netstat -n pour vérifier cela. 

arrêtez le service. lancez Apache. redémarrez le service.

0
gondwe

Je viens de rencontrer le même problème. L'installation du framework .NET sur la machine cible a résolu le problème.

Mieux encore, assurez-vous que toutes les dépendances requises sont présentes sur la machine sur laquelle le code sera exécuté.

0
Czar Pino

Essaye ça:

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);
}
0
daniele3004