【问题标题】:C# MySQL - remote connectingC# MySQL - 远程连接
【发布时间】:2014-07-21 12:12:57
【问题描述】:

我正在创建一个使用 MySQL 数据库存储数据的 C# (.NET 4.0) 应用程序。此数据库安装在第 3 方公司的服务器上,应用程序必须远程连接 - 目前通过域名 (myname.home.pl)。

另外有一个网站也使用同一个数据库,这个网站位于同一台服务器上,所以它通过localhost连接到数据库。

网站始终正常运行,连接没有问题。

C# 应用程序通常也可以成功连接,但有时它无法打开连接,并且在连接超时后它会返回错误:“无法连接到任何指定的 MySQL 主机”。我不知道发生这种错误的原因是什么。

此问题出现在 Windows XP 和 Windows 7 上,其他操作系统版本未经测试。

连接字符串格式如下(sqlData struct 包含登录数据):

connection.ConnectionString = String.Format(
    "server={0};database={1};user='{2}';password='{3}';",
    sqlData.Server,
    sqlData.Catalog,
    sqlData.User,
    sqlData.Password
);

我在 stackoverflow 上找到了几个关于此错误的主题,但没有解决...

有没有人遇到过类似的问题?可能是什么原因,或者我怎样才能让它不发生?

感谢任何帮助的建议。

【问题讨论】:

  • 您应该检查/发布有关该异常的所有内容(错误代码、任何其他内部异常)并检查服务器端日志。像这样……在雾中射击。一般来说,如果你通过互联网,你还应该设置一个尝试/重试模式(也许第一次尝试有更短的超时时间)。
  • Liekly 网络相关
  • exc.ToString() 只给了我信息: MySql.Data.MySqlClient.MySqlException (0x80004005): 无法连接到任何指定的 MySQL 主机。在 MySql.Data.MySqlClient.NativeDriver.Open() 在 MySql.Data.MySqlClient.Driver.Open() 在 MySql.Data.MySqlClient.Driver.Create(MySqlConnectionStringBuilder 设置) 在 MySql.Data.MySqlClient.MySqlPool.GetPooledConnection()在 MySql.Data.MySqlClient.MySqlPool.TryToGetDriver() 在 MySql.Data.MySqlClient.MySqlPool.GetConnection() 在 MySql.Data.MySqlClient.MySqlConnection.Open()

标签: c# mysql .net remote-connection


【解决方案1】:

MySql.Data.MySqlClient.MySqlException (0x80004005):无法连接到任何指定的 MySQL 主机。

   em MySql.Data.MySqlClient.NativeDriver.Open()

   em MySql.Data.MySqlClient.Driver.Open()

   em MySql.Data.MySqlClient.Driver.Create(MySqlConnectionStringBuilder settings)

   em MySql.Data.MySqlClient.MySqlPool.GetPooledConnection()

   em MySql.Data.MySqlClient.MySqlPool.TryToGetDriver()

   em MySql.Data.MySqlClient.MySqlPool.GetConnection()

   em MySql.Data.MySqlClient.MySqlConnection.Open()

   em EasylockControl.Login.button1_Click(Object sender, EventArgs e)

   em System.Windows.Forms.Control.OnClick(EventArgs e)

   em System.Windows.Forms.Button.OnClick(EventArgs e)

   em System.Windows.Forms.Button.PerformClick()

   em System.Windows.Forms.Form.ProcessDialogKey(Keys keyData)

   em System.Windows.Forms.Control.ProcessDialogKey(Keys keyData)

   em System.Windows.Forms.Control.PreProcessMessage(Message& msg)

   em System.Windows.Forms.Control.PreProcessControlMessageInternal(Control target, Message& msg)

   em System.Windows.Forms.Application.ThreadContext.PreTranslateMessage(MSG& msg)

【讨论】:

    猜你喜欢
    • 2017-11-27
    • 2012-07-08
    • 1970-01-01
    • 1970-01-01
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多