Cloud SQL for MySQL 错误消息

本页面讨论了 Cloud SQL 中遇到的一些错误消息。

概览

Cloud SQL 中的错误消息有许多来源,并会出现在很多地方。一些错误消息来自数据库引擎本身,一些来自 Cloud SQL 服务,一些来自客户端应用,还有一些是由 Cloud SQL Admin API 调用返回的。

本页面包含 Cloud SQL 中最常见的一些错误。如果您在此找不到所看到的错误代码或消息,则可以在以下位置查找来源参考资料:

如果您找不到有关所看到的错误消息的参考材料,还可以在以下这些其他用户可能有相关经验的位置进行搜索:

未知错误

下表显示了 Unknown Error 可能发生的一些已知情况,并列出了具体补救措施(如适用)。不过,此列表并非完整列表。如果您在表中未找到您的情况,请参阅 Cloud SQL 的公开问题跟踪器。如果您在此处未找到问题,请考虑提交报告或查看其他支持选项

操作 可能的问题 可以尝试的操作
备份 如果您在自动或手动备份期间看到此错误消息,可能是实例磁盘已满。 如果临时文件大小占用过多空间,您可以重启实例以移除该文件并释放磁盘空间。否则,您可能需要将实例升级为更大的磁盘。
克隆 当所选可用区中的资源不足时,可能会发生这种情况。 请尝试相应区域中的另一个可用区,或者稍后重试。
创建实例
  • 当您尝试重新使用与最近删除的实例相同的名称时,可能会发生这种情况。
  • 还可能是由间歇性连接问题引起的。
  • 日志可能显示项目未启用 Service Networking API。
  • 尝试并行创建多个实例时也会出现此错误。例如,Terraform 脚本可实现此尝试。
  • 实例名称在删除大约一周后才能重新使用。
  • 如果是间歇性连接问题,则唯一的补救方法是重试。
  • 为项目启用 Service Networking API
  • 并行实例创建脚本仅会成功创建一个实例。对该脚本进行修改,等到每个实例创建操作完成后再继续执行下一步。
创建副本 日志文件中可能有更具体的错误信息。 Cloud Logging 中查看日志以找到实际错误。如果错误为 set Service Networking service account as servicenetworking.serviceAgent role on consumer project,请停用 Service Networking API,然后重新启用。此操作会创建继续执行该过程所需的服务帐号。
导出 如果您在尝试将数据库导出到 Cloud Storage 存储分区时看到此错误,则可能是带宽问题导致转移失败。 Cloud SQL 实例可能与 Cloud Storage 存储分区位于不同区域。从一个大洲读取数据并将数据写入另一个大洲涉及很多网络用量,可能会导致类似的间歇性问题。
故障转移(旧版) 如果您使用的是旧版故障转移配置,则在故障转移副本机器大小不足以处理故障转移时,可能会发生这种情况。 最好的解决方案是迁移到当前高可用性配置。否则,您需要将故障转移副本更新为更大的机器。
故障转移(自动) 当服务检测到主实例仍保持响应时,自动故障转移操作可能会产生此错误消息。 在这种情况下,您无需执行任何操作。不会发生故障转移,因为不需要。
导入 导入文件可能包含需要超级用户角色的语句。 修改该文件以移除任何需要超级用户角色的语句。

Cloud SQL 还会使用一些第三方二进制文件(例如 mysqld),它们可能会生成未知的错误消息。此类错误是第三方二进制文件的内部错误,不在 Cloud SQL 的范围内。但是,有时可以在 Cloud SQL 日志文件中找到更具体的错误。

有时,错误代码是未知的错误代码。在这种情况下,完整消息可能是 Unknown Error Code

其他错误

连接被取消

您看到错误消息 Got an error reading communication packetsAborted connection xxx to db: DB_NAME

可能的原因

Aborted connection 错误表明应用未以正确的方式结束连接。

可以尝试的操作

检查是否存在以下情况:

  • 应用在退出前未调用 mysql_close()。
  • 通信错误
  • 应用可能已处于休眠状态超过 wait_timeoutinteractive_timeout 中指定的秒数,未向服务器发出任何请求。请参阅第 5.1.7 节:服务器系统变量
  • 应用在数据传输过程中突然终止。
  • max_allowed_packet 变量值可能太小,或者查询需要的内存多于为 mysqld 分配的内存。这可以通过将 max_allowed_packet 标志增加到更大的数字来解决。


错误请求

您看到错误消息 HTTP Error 400 Bad Request

可能的问题

错误请求可能有多种原因。非法参数是最常见的一种。在这种情况下,请求使用的参数不正确或参数的值无效。对于许多其他原因,错误消息可能包含有用的提示。

可以尝试的操作

对于非法参数,请检查请求以确保每个参数都允许使用,并且参数的每个值都是有效的。对于其他所有原因,请检查日志文件,查看是否有更多可用信息。


用户访问被拒绝

您看到错误消息 Access denied for user 'XXX'@'XXX' (using password: XXX)

可能的问题

可能存在多种原因,包括:

  • 用户名(或密码)不正确。
  • 用户正在通过 @XXX 以外的网址进行连接。
  • 用户对要尝试连接的数据库没有正确的权限。

可以尝试的操作

  • 验证用户名和相应的密码。
  • 检查连接的来源,查看它与用户具有访问权限的网址是否匹配。
  • 在数据库中检查用户的授予权限。

磁盘已满

您看到错误消息 Disk is full,或者您发现磁盘空间用尽。

可能的问题

主实例磁盘大小可能在副本创建期间变满。

可以尝试的操作

对主实例进行修改以将其升级为更大的磁盘。


启用标志使实例崩溃

启用标志后,实例会在错误和崩溃之间循环。

可能的问题

如果设置 max_connections 标志值过高,就会导致此错误。

可以尝试的操作

如果将 max_connections 标志值设置过高,可能会使实例无法容纳所有连接,从而导致 Error 1040: Too many connections 和检测信号故障。请与客户服务联系,请求移除标志,后跟 hard drain。这会强制实例在使用新配置(没有标志或设置)的其他主机上重启。


升级过程中出现严重错误

升级实例上的资源时,您看到错误消息 ERROR_INTERNAL_FATAL

可能的问题

可能存在多个原因。

可以尝试的操作

日志可能会显示更多信息。否则,请联系客户服务,强制重新创建实例。


导出过程中出现 HTTP 错误 408:(超时)

您在 Cloud SQL 中执行导出作业时看到错误消息 HTTP Error 408 (Timeout)

可能的原因

CSV 和 SQL 格式的导出方式不同。SQL 格式包含整个数据库,可能需要更长时间才能完成。使用 CSV,您可以指定要在导出操作中包含的数据库元素。

可以尝试的操作

使用 CSV 格式,并运行多个较小的导出作业,以减小每项操作的规模和长度。


HTTP 错误 409

您看到错误消息 HTTP Error 409 in a Terraform scriptError 409 Operation failed because another operation was already in progress

可能的问题

  1. 检查 Terraform 脚本。脚本必须等待每项操作完成后才能开始下一项操作。
  2. HTTP Error 409: Operation failed because another operation was already in progress
  3. 在名称重新使用的等待期结束之前,您尝试为新实例重新使用与最近删除的实例相同的名称。

可以尝试的操作

  1. 如果正在运行 Terraform 脚本,请停止执行,直到每项实例操作完成。让脚本轮询并等到针对前一个操作 ID 返回 200。否则,请等待当前正在运行的操作完成。
  2. 删除实例后,您必须等待一周,然后才能为新实例重新使用同一名称。

无法删除实例

错误消息

您看到错误消息 ERROR: (gcloud.sql.instances.delete) HTTP Error 409: The instance or operation is not in an appropriate state to handle the request,或者实例具有 INSTANCE_RISKY_FLAG_CONFIG 标志状态。

可能的问题

  1. Another operation is in progress
  2. 只要使用至少一个 BETA 标志,就会触发 INSTANCE_RISKY_FLAG_CONFIG 警告。

可以尝试的操作

  1. Cloud SQL 操作不会并发运行。等待其他操作完成。
  2. 移除存在风险的标志设置并重启实例。

内部错误

您看到错误消息 {"ResourceType":"sqladmin.v1beta4.instance", "ResourceErrorCode":"INTERNAL_ERROR","ResourceErrorMessage":null}

可能的问题

服务项目可能缺少此功能所需的 Service Networking 服务帐号。

可以尝试的操作

如需修复服务权限,请停用 Service Networking API,等待五分钟,然后重新启用。


MySQL 错误 1040

您看到错误消息 MySQL Error 1040: Too many connections

可能的原因

max_connections 标志值设置得过高可能会导致此错误。

可以尝试的操作

请与客户服务联系,请求移除标志,然后执行 hard drain。这会强制实例在使用新配置(没有标志或设置)的其他主机上重启。


网络关联失败

您看到错误消息 Network association failed due to the following error: set Service Networking service account as servicenetworking.serviceAgent role on consumer project

可能的问题

未在项目中启用 Service Networking API

可以尝试的操作

在您的项目中启用 Service Networking API。如果您在尝试为 Cloud SQL 实例分配专用 IP 地址时看到此错误并且您使用共享 VPC,则还需要为宿主项目启用 Service Networking API


无权连接

您看到错误消息 Unauthorized to connect

可能的原因

由于在多个级层进行授权,因此可能存在多个原因。

  • 在数据库级层,数据库用户必须存在且其密码一致。
  • 在项目级层,用户可能没有正确的 IAM 权限,包括 serviceusage.services.usecloudsql.instances.connect 权限。
  • 在网络级层,如果 Cloud SQL 实例使用公共 IP,则连接的来源 IP 必须在已获授权的网络中。

可以尝试的操作

  • 确保用户存在且其密码一致。
  • Service Usage Consumer 角色分配给用户帐号:此角色包含 serviceusage.services.use 权限。
  • 如果使用公共 IP,请确保来源 IP 在已获授权的网络中。

操作对此实例无效

HTTP Error 400: This operation isn't valid for this instance 进行 API 调用时看到错误消息 instances.restoreBackup

可能的问题

您无法将备份恢复到存储空间大小 (XX GB) 小于备份大小 (YY GB) 的实例。

可以尝试的操作

对目标实例进行修改以增加其存储空间大小。


自动备份期间内存不足

您看到错误消息 [ERROR] InnoDB: Write to file ./ibtmp1 failed at offset XXXX, YYYY bytes should have been written, only 0 were written.

可能的原因

实例在进行自动备份时达到硬性限制。

可以尝试的操作

检查确认您的操作系统和文件系统支持此大小的文件。检查确认磁盘未满,或者磁盘配额未用尽。您可以通过 Google Cloud Console 申请增加配额,也可以对实例进行修改以将其升级为更大的磁盘。


超出配额

您看到错误消息 RESOURCE_EXHAUSTED: Quota exceededGLOBAL_ADDRESSES_QUOTA_EXCEEDED

可能的原因

您已达到每分钟或每日配额的上限。查看 Cloud SQL 的配额和限制

可以尝试的操作

通过 Google Cloud Console 申请增加配额。


剩余连接槽已预留

您看到错误消息 FATAL: remaining connection slots are reserved for non-replication superuser connections

可能的问题

已达到允许的连接数上限。

可以尝试的操作

增加 max_connections 标志。 请参阅配置数据库标志


请求缺少有效的 API 密钥

您看到错误消息 HTTP Error 403: PERMISSION_DENIED. The request is missing a valid API key

可能的问题

您可能没有有效的服务帐号密钥 JSON 文件,或者该文件可能未存储在预期位置。

可以尝试的操作

验证 GOOGLE_APPLICATION_CREDENTIALS 环境变量中存储的位置包含有效的服务帐号密钥 JSON 文件,并且该变量指向正确的位置。


发生了系统错误

您看到错误消息 [ERROR_RDBMS] system error occurred

可能的问题

  1. 用户可能没有所需的所有 Cloud Storage 权限。
  2. 数据库表可能不存在。

可以尝试的操作

  1. 检查核实您对存储分区至少拥有 WRITER 权限,并且对导出文件至少拥有 READER 权限。如需详细了解如何在 Cloud Storage 中配置访问权限控制,请参阅创建和管理访问权限控制列表
  2. 确保表已存在。如果表已存在,请确认您对存储分区拥有正确的权限。

表定义已更改

您看到错误消息 Table definition has changed, please retry transaction when dumping table

可能的问题

在导出过程中,表发生了更改。

可以尝试的操作

如果在导出操作期间使用以下语句,则转储事务可能会失败:

  • ALTER TABLE
  • CREATE TABLE
  • DROP TABLE
  • RENAME TABLE
  • TRUNCATE TABLE
从转储操作中移除所有这些语句。


临时文件大小超出 temp_file_limit

您看到错误消息 Temporary file size exceeds temp_file_limit

可能的问题

对于您的数据库用量,temp_file_limit 标志设置得太低。

可以尝试的操作

增加 temp_file_limit 大小。 请参阅配置数据库标志