作为网站所有者,您需要管理登录您网站的浏览者和在线客户的数据。好吧,您不能一直手动存储数据。因此,您需要一个程序来让您更轻松地存储和收集数据。好吧,MySQL 是可以让网站所有者执行这些任务的程序。MySQL 基于关系数据库管理系统 (RDBMS)。它是使用最广泛的数据库管理系统 (DBMS) 之一,由于其开源许可,无论大小公司都可以充分利用它,而无需担心订阅费用。
但是,当您使用开源应用程序或平台时,您不会找到技术支持来解决您在使用它时可能遇到的任何问题。网络论坛和同一开源平台的其他用户可以帮助您解决问题。为了帮助刚接触 MySQL 数据库的用户,我们提供了一些在使用该程序时可能遇到的最常见错误的列表,从而使错误解决变得更加容易。除了错误列表,我们还提供相同的解决方案。
MySQL 中的常见错误
因此,既然您已经了解了使用 MySQL 的好处,那么是时候看看使用 MySQL 处理数据库时可能遇到的常见错误了。
1. Mysql Server 消失了
使用远程数据库时,您将收到的最常见错误之一是以MySQL Server Gone Away的形式呈现的服务器问题。如果显示此错误,则如果数据库中没有发生任何更改,则服务器将在 8 小时后终止连接。但是您可以在启动mysqld时手动设置时间限制。
除此之外,您收到此错误的另一个原因是您可能已将“关闭”添加到您的 MySQL 连接。一旦此命令处于活动状态,您尝试在数据库上运行的所有查询都将不起作用,因为没有关闭连接。
- CR_SERVER_GONE_ERROR:此错误表明试图访问数据库的客户端无法将问题发送到数据库服务器。
- CR_SERVER_LOST:客户端在发送请求时没有收到完整的答案,或者在某些情况下,没有收到来自服务器端的任何答案。
当有人在使用服务器数据库时错误地对正在运行的线程激活了kill 功能时,就会出现这两个错误。要检查 MySQL 是否还没有死,可以执行以下命令mysqladmin version。使用此命令,您将能够找到数据库的正常运行时间。如果由于某种原因,mysqld崩溃了,那么你需要重点寻找它崩溃的原因。
此外,在向服务器发送不正确或太大而无法处理的请求时,您可能会遇到此错误。如果mysqld从用户那里收到一个非常大的数据包,它会认为用户端发生了一些错误并中断连接。
2.密码失败
每当您与 MySQL 客户端建立连接时,它都会要求您输入密码。此密码有助于调用客户端程序。您可以使用以下命令在 MySQL 中输入密码:
> mysql -u 用户名 -p
出现提示时,键入密码。如果您提供了选项文件或使用了命令行,则密码可以完美运行。但是当您在命令提示符上交互输入密码时,它会要求您输入密码。发生错误。在命令提示符下输入相同密码失败的原因是系统提供的读取用户输入密码的库将密码值限制为很小的数字;在大多数情况下,它是八。
嗯,这是系统库的问题,这个错误与MySQL无关。要解决此问题,您需要更改您正在使用的密码并将其设置在八个字符的限制之下。
3.连接太多
当您尝试与mysqld服务器建立连接时,这意味着所有可用的连接都已在使用中。您可以在这里做两件事,或者等待连接关闭,以便将您的连接与服务器连接。或者您可以要求服务器所有者增加与他们的 mysqld 的连接数。
要记住的一件事是mysqld服务器允许max_connections + 1权限。max_connections附带的额外连接是为具有管理员权限的帐户保留的。
4. 内存不足
有时当您尝试在 MySQL 中添加新数据时,它会显示“内存不足”错误。当 MySQL 内存中没有足够空间用于您发出的查询的整个请求时,就会发生这种情况。要修复此错误,您需要首先检查您输入的查询是否正确?检查查询是否打算在单个输出中返回那么多行。如果没有,您需要对查询进行更改并编写正确的查询。
另一方面,如果查询没问题,并且没有需要进行更正,那么我们需要查找 MySQL 引起的问题。使用这样的快速选项结果:mysql_use_result()
5. 包大小过大
面临这个错误的原因有很多。数据包可以是您发送到 MySQL 服务器的单个 SQL 语句。此外,您将单行发送到服务器。最后,当使用复制主服务器发送日志事件时,可能会发生错误。MySQL 接受的最大数据包大小为 1GB。这是可以从 MySQL 服务器发送和接收的最大大小。要增加数据包接受的大小,您需要编写以下命令:
> mysql –max_allowed_packet=32M
MySQL 的默认值仅为 64MB,因此增加其大小是每个用户在开始使用 MySQL 之前必须做的一件事。变量的增加是一个预防步骤,以避免因大小而面临错误。
6.通讯错误
使用较新版本的 MySQL 或 3.23.40 之后的版本,如果您启动带有警告的mysqld,用户只会收到通信错误。如果您在错误日志中发现错误,则意味着您的 MySQL 中的以下问题之一导致了此问题。
- 该错误可能是由于您的计算机上运行的程序在您退出之前没有调用mysql_close ()。
- 客户端服务器处于睡眠状态超过wait_timeout或interactive_timeout而不提供任何请求。
- 您正在运行的程序在传输过程中突然关闭。
- 除此之外,当您使用错误的密码时。
- 最后,当服务器花费超过connect_timeout秒来与包建立连接时。
7. 表满错误
当您用于 MySQL 的磁盘已满,或者您插入新值的表已达到其最大限制时,会发生此错误。MySQL 数据库的最大大小取决于操作系统的限制。您需要知道 MySQL 对表的大小没有任何内部限制。要解决此错误,您首先需要查找分区以确保它未满并首先导致错误。如果磁盘空间不是问题,请检查变量innob_data_file_path以查看是否已定义最大表大小。
8. 命令不同步
当你的 MySQL 发生这个错误时,这意味着你在调用客户端函数时做了一些事情,但在大多数情况下,它是函数的错误顺序。MySQL 通过使用半双工响应系统与客户端进行通信来工作。因此,当您键入要发送到服务器的查询时,服务器将强制将结果发送给您。发生这种情况时,您需要执行mysql_use_result()或mysql_store_result()来检索服务器正在发送的结果。这将导致完整的查询交互,因此您不会遇到此错误。但是如果你向服务器提交查询然后不回调结果,错误会再次出现。
另一方面,有些查询没有任何结果要返回。在此类查询中,您可以使用mysql_rows(_pstMql)。此查询将向您发送由您的查询更新的记录数。
作为 MySQL 用户,您需要了解有关该程序的一件事是,当您使用多线程时。您必须确保每个线程都有自己独立的 Mysql 来访问数据库。如果您不遵循这种工作方式,您的一个线程可能无法保存结果集,并且在保存结果之前,第二个线程将启动对数据库的新查询。因此,导致命令不同步。
9. 表名无效
很多人将此错误与从服务器删除数据库或从服务器删除表混淆。您收到此错误的原因可能有很多。您可能输入了错误的表名,或者您不正确地引用了您的表。作为程序员,您需要知道 MySQL 服务器是通过使用目录和文件来存储数据库表的。该功能依赖于操作系统文件管理。此外,您用于表的名称可能区分大小写,因此请确保您正确检查了表的名称。
如果名称没有问题,您应该重新启动 MySQL 服务器,因为有时由于服务器关闭不当而显示此错误。如果问题仍然存在,您需要使用以下命令修复数据库中的表:
修复表Table_name;
另一方面,您可以尝试恢复为数据库创建的备份并运行该备份表。如果所有这些方法对您没有帮助,那么您需要复制备份中存在的 ibdata 文件,并启用 InnoDB 崩溃恢复。请注意,在开始最后提到的过程之前,您必须对所有数据库文件进行良好备份。
10. 主机名被封锁
发生此错误的主要原因是当您这边有太多的连接请求在两者之间被中断时。您可以更改连续中断的连接请求可接受的最大变量数。一旦有max_connect_errors数字绕过,服务器将假定您的端有问题。因此,它会阻止您的连接,直到您运行FLUSH HOSTS。此查询将取出存储在 MySQL 服务器中的连接记录。mysqld 服务器max_connect_errors的默认值为 100 个错误。您可以使用以下查询来调整它们:
> mysqld_safe –max_connect_errors=10000
在对服务器设置进行任何更改之前,请确保检查您的 TCP/IP 连接是否有问题,因为用户很难在短时间内犯 100 次错误。如果您的网络出现问题,那么增加max_connect_errors不会帮助您解决错误。
结论
数据库错误可能会迅速停止您的正常工作,如果问题持续太久,它还会影响您网站的稳定性。使用此快速指南,您将能够立即处理常见的 MySQL 错误并使您的数据库恢复正常工作。
该数据库是任何在线网络服务的一个组成部分。将其停机时间保持在最低限度必须是 Web 开发人员和网站所有者的首要任务。我们希望这篇文章能帮助您解决您在 MySQL 中遇到的问题。我们上面提供的解决方案和方法甚至可以由非技术人员执行。如果您的数据库中仍然存在错误,那么您必须立即致电专家并快速解决问题,不要浪费任何时间。