MySql *完全随机* 无法连接到任何指定的 MySQL 主机

标签 mysql macos mono asp.net-3.5 connector-net

这个简直要了我的命。我们在 MySQL 数据库上有一个 ASP.NET/Mono 应用程序。几个月来,我们一直被“无法连接到任何指定的 MySQL 主机”的完全随机但一致的事件所困扰。我绝不是 MySQL 专家,我希望这是愚蠢的事情。

细节:
MySQL 5.5.17
MySQL 连接器/Net 6.4.4
单声道 2.10.8
MonoDevelop 2.8.6.5

连接字符串:SERVER=localhost,3306;DATABASE=xxx;UID=xxx;PWD=xxx;CONNECTION TIMEOUT=90;Encrypt=false;

Max_connections 设置为 150。永远不会超过 5 个连接,并且它们都是事件的(可能是由于池)。

  • 应用程序是 C# ASP.NET 3.5。在 Windows/IIS 上稳定运行多年。九个月前,我们的市场让我们摆脱了 Windows,所以我们(很容易补充)将整个事情转移到 Mono/Apache。

  • 该问题仅出现在 Mono 端,但这很关键,因为我们已经停止了对 Windows 的支持。

  • 平均每小时发生 10 次,但间隔变化很大。

  • 已在以下配置中发现该问题:

Ubuntu 11/Apache2/mod_mono
OSX Lion/Apacke2/mod_mono
Ubuntu 11/xsp2/MonoDevelop调试服务器
OSX Lion/xsp2/MonoDevelop 调试服务器

  • 搞砸了 keepalive、wait_timeout、connectionreset 等都无济于事。时间似乎没有影响。该错误是在 conn.open 上即时出现的 - 而不是在任何连接超时之后。

  • 这里有一条线索 - 该应用绝对不会在 Pooling=false 的情况下运行。几乎每次连接尝试都会失败。我当然想要汇集,但我不确定为什么没有汇集就无法工作。

  • 该应用程序有一个内置的“心跳”(用户在数据库中的 session )- 每 2 分钟一次。

  • 最令人抓狂的是?它绝对不能在运行环境中按需复制——它是随机的。我检查了查询大小、执行时间等。

  • 我只能在一种情况下实现它:在 Ubuntu 服务器或 OSX 的初始启动时,Mono 第一次连接到 MySQL - 然后它就会发生。在那之后,这是任何人的猜测。

最佳答案

好吧,这是旧的,但我在这上面浪费了太多时间,我必须分享这篇我终于找到的救命文章:Getting Mono and Mysql to play nice together

我总结了某天链接以 404 结束的情况:必须定义连接字符串的每个变量。所以,是的,这包括端口,我以前从来没有在连接字符串中定义过它。

对我来说,它解决了这个问题。

关于MySql *完全随机* 无法连接到任何指定的 MySQL 主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9369981/

相关文章:

mysql - 如何从结构成员传递 MySQL 中的 VALUES

android - Xamarin Android - 关闭 Mono 日志

c# - 如果我知道资源名称,则返回资源 ID

mysql - 如果删除了两个外键,则删除表条目

android - SQLite数据库错误: SQLiteLog: (1) near "s": syntax error

macos - 卸载仍然有实例的kext

javascript - 适用于 chrome 但不适用于 firefox、Eventlistener、appendChild 和 style.backgroundColor

c - 使用 arduino 和 C 初始化串行接口(interface)

c# - CS0121 - Roslyn、CSC v12.0 和 mono 编译器之间的重载解析不一致

Mysql左外连接右表中的一列不是外键