我有时候mysql服务消失了但是如果我清除了浏览器缓存然后问题解决了。我无法弄明白为什么?
请参阅此链接上的错误图片http://veenas.com/beta/error.jpg
答案 0 :(得分:0)
来自MySQL doc:
MySQL服务器消失的最常见原因是服务器超时并关闭了连接。
MySQL服务器的一些其他常见原因已经消失了 是:
您(或数据库管理员)已使用a杀死正在运行的线程 KILL语句或mysqladmin kill命令。
您尝试在关闭与服务器的连接后运行查询。 这表示应用程序中应存在逻辑错误 校正。
在不同主机上运行的客户端应用程序没有 从该主机连接到MySQL服务器的必要权限。
您从客户端的TCP / IP连接获得超时。这个 如果你一直在使用命令可能会发生:mysql_options(..., MYSQL_OPT_READ_TIMEOUT,...)或mysql_options(..., MYSQL_OPT_WRITE_TIMEOUT,...)。在这种情况下,增加超时可能 帮助解决问题。
您在服务器端遇到超时和自动 禁用客户端中的重新连接(重新连接标志位于 MYSQL结构等于0)。
您正在使用Windows客户端,而服务器已经放弃了 在命令之前连接(可能是因为wait_timeout已过期) 发了。
Windows上的问题是在某些情况下MySQL没有得到 写入到服务器的TCP / IP连接时来自操作系统的错误, 但是在尝试从中读取答案时会出现错误 连接。
在MySQL 5.0.19之前,即使是MYSQL中的重新连接标志 结构等于1,MySQL不会自动重新连接 重新发出查询,因为它不知道服务器是否确实得到了 原始查询与否。
解决方法是在连接上执行mysql_ping() 如果自上次查询以来已经有很长时间了(这是什么 Connector / ODBC确实)或者在mysqld服务器上设置wait_timeout这么高 它在实践中永远不会超时。
如果向服务器发送查询,也可能会收到这些错误 不正确或太大。如果mysqld收到的数据包也是如此 大或有故障,它假设出现了问题 客户端并关闭连接。如果你需要大问题(for 例如,如果您正在使用大型BLOB列,则可以增加 通过设置服务器的max_allowed_packet变量来查询限制, 其默认值为1MB。你可能还需要增加 客户端的最大数据包大小。有关设置的更多信息 数据包大小在第B.5.2.10节“数据包太大”中给出。
插入很多行的INSERT或REPLACE语句也可以 导致这些错误。这些语句中的任何一个都发送一个 对服务器的单个请求,不管行数 插入;因此,您通常可以通过减少数量来避免错误 每个INSERT或REPLACE发送的行数。
如果您要发送16MB或更小的数据包,也会丢失连接 如果您的客户端早于4.0.8并且您的服务器是4.0.8和更高,则更大 上面,或者反过来。
如果主机名查找失败,也可能会看到此错误(for 例如,如果您的服务器或网络所依赖的DNS服务器 下)。这是因为MySQL依赖于主机系统的名称 解决方案,但无法知道它是否起作用 从MySQL的角度来看,问题与其他问题无法区分 网络超时。
如果是MySQL,你可能还会看到MySQL服务器已经消失了 以--skip-networking选项开始。
如果是MySQL,可能会导致此错误的另一个网络问题 端口(默认为3306)被防火墙阻止,从而阻止任何端口 完全连接到MySQL服务器。
您也可以使用fork子应用程序遇到此错误 进程,所有这些进程都尝试使用与MySQL相同的连接 服务器。这可以通过为每个使用单独的连接来避免 儿童过程。
您遇到了服务器在执行时死机的错误 查询。
您可以通过执行来检查MySQL服务器是否已死亡并重新启动 mysqladmin版本并检查服务器的正常运行时间。如果是客户 连接被破坏是因为mysqld崩溃并重新启动,你应该 专注于找到崩溃的原因。首先检查 是否再次发出查询会再次杀死服务器。见章节 B.5.4.2,“如果MySQL不断崩溃该怎么办”。
您可以通过启动获取有关丢失连接的更多信息 带有--log-warnings = 2选项的mysqld。这记录了一些 hostname.err文件中的已断开连接的错误。请参见第5.2.1节“ 错误记录“。
如果您想创建有关此问题的错误报告,请务必确定 您包含以下信息:
表明MySQL服务器是否已经死亡。你可以找到有关的信息 这在服务器错误日志中。参见第B.5.4.2节“如果要做什么 MySQL继续崩溃“。
如果特定查询杀死了mysqld,则检查所涉及的表 在运行查询之前使用CHECK TABLE,可以提供一个 可重复的测试用例?请参见第21.3节“调试和移植” MySQL的”。
MySQL中wait_timeout系统变量的值是多少 服务器? (mysqladmin变量为您提供此变量的值。)
您是否尝试在启用常规查询日志的情况下运行mysqld 确定问题查询是否出现在日志中? (见章节 5.2.2,“一般查询日志”。)