执行代码时出现上述错误 -
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; m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message&amp; m)
at System.Windows.Forms.ButtonBase.WndProc(Message&amp; m)
at System.Windows.Forms.Button.WndProc(Message&amp; m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&amp; m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&amp; m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG&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; m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message&amp; m)
at System.Windows.Forms.ButtonBase.WndProc(Message&amp; m)
at System.Windows.Forms.Button.WndProc(Message&amp; m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&amp; m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&amp; m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG&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时出现错误。
答案 0 :(得分:15)
有时间隔和连接字符串中的参数顺序很重要(基于个人经验和漫长的夜晚:S)
所以坚持使用标准格式here
服务器= myServerAddress;端口= 1234;数据库= MYDATABASE; UID =名为myUsername; PWD = MYPASSWORD;
答案 1 :(得分:11)
由于这是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
...但真正的解决方案是使用连接池,以便&#34;打开&#34;连接确实重用了现有连接。大多数框架会自动执行此操作,但在我的情况下,应用程序由于某种原因手动处理连接。
答案 2 :(得分:7)
我在本地网络上的计算机上运行mysql。 MySQL Workbench可以连接到该服务器,但不能连接到我的c#代码。我通过断开与正在运行的vpn客户端解决了我的问题。
答案 3 :(得分:1)
更新您的连接字符串,如下所示(不包含port
变量):
MysqlConn.ConnectionString = "Server=127.0.0.1;Database=patholabs;Uid=pankaj;Pwd=master;"
希望这会有所帮助......
答案 4 :(得分:1)
有时候问题出在你的Windows防火墙上,请确保你的服务器允许访问与你的mysql数据库相关的所有端口。
答案 5 :(得分: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; }
答案 6 :(得分:0)
刚遇到同样的问题。在目标计算机上安装.NET框架解决了这个问题。
更好的是,确保所有必需的依赖项都存在于运行代码的机器中。
答案 7 :(得分:0)
在Windows 10中。
检查apache服务是否正在运行。因为它被万维网服务所取代。
运行netstat -n来检查这个。
停止服务。启动apache。重启服务。
答案 8 :(得分:0)
我遇到了完全相同的错误。
这是您需要做的事情:
如果您使用的是MAMP,请关闭您的服务器。再次打开MAMP时(在重新启动服务器之前),单击首选项按钮。
然后,您需要单击端口选项卡,然后单击按钮&#34;将Web和MySQL端口设置为80&amp; 3306&#34;
答案 9 :(得分: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);
}
答案 10 :(得分:0)
如果您正在使用localhost URL访问实时数据库,则它将无法工作。 请在IIS上部署您的服务或网站并创建URL,然后使用新的URL访问数据库。
答案 11 :(得分:0)
在我的情况下,删除“ port = 3306;”部分从连接字符串解决了问题。
答案 12 :(得分:0)
在我的情况下,托管服务器具有用于远程连接MySql的白名单。尝试将您的IP添加到托管管理面板中的白名单。
答案 13 :(得分:0)
我遇到了同样的问题,找到了解决问题的方法。以前我有我的连接字符串,因为要注意,根据您的.NET环境,端口:3306
必须像127.0.0.1:3306
那样连接到服务器,或者像Server=127.0.0.1;Port=3306
这样要从服务器上删除:< / p>
"Server=127.0.0.1:3306;Uid=username;Pwd=password;Database=db;"
运行良好,直到发生某些不确定的事情,可能是我的.NET应用程序包的最新更新。看起来连接字符串的格式和间距很重要。无论如何,以下格式似乎对我有用:
"Server=127.0.0.1;Port=3306;Uid=username;Pwd=password;Database=db;"
尝试两个版本中的任何一个,看看哪个版本适合您。
我还注意到您没有使用骆驼套,可能就是这样。确保您的财产名称使用大写字母
Server
Port
Uid
Pwd
Database
答案 14 :(得分:-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();
}
}
}
确保您的数据库服务器正在运行,如果它没有运行,那么它无法建立连接并且在3306上运行默认的mysql,所以如果端口号不同则不需要提及端口,那么我们需要提一下港口