本页面讨论了 Cloud SQL 中遇到的一些错误消息。
概览
Cloud SQL 中的错误消息有许多来源,并会出现在很多地方。一些错误消息来自数据库引擎本身,一些来自 Cloud SQL 服务,一些来自客户端应用,还有一些是由 Cloud SQL Admin API 调用返回的。
本页面包含 Cloud SQL 中最常见的一些错误。如果您在此找不到所看到的错误代码或消息,则可以在以下位置查找来源参考资料:
如果您找不到有关所看到的错误消息的参考材料,还可以在以下这些其他用户可能有相关经验的位置进行搜索:
- Stack Overflow 上有关 Cloud SQL 的问题
- Cloud SQL 的公开问题跟踪器
- DBA Stack Exchange
- Cloud SQL 论坛
- Google Cloud Slack 社区
- Reddit 上的Google Cloud
操作错误
A | B | C | D | E | F | G | I | L | M | N | O | P | Q | R | S | T | U | W
| 错误消息 | 问题排查 |
|---|---|
| 已中止 xxx 到 db: DB_NAME 的连接。 | 应用未正确终止连接。 检查是否存在以下情况:
|
| 访问遭拒;您需要(至少其中一种)SUPER 特权才能执行此操作 | 源数据库中可能有以 Cloud SQL 不支持的方式引用 DEFINER 的视图、函数或过程。更新外部数据库中的定义器,例如从 |
| 用户“XXX”@“XXX”的访问遭拒(使用密码:XXX) | 可能存在多种原因,包括:
请尝试以下操作 ...
|
| 在网络中找不到分配的 IP 范围。 | 在修改或移除分配的范围后,VPC 对等互连未更新。 您需要修改专用连接。使用以下命令,并务必使用 gcloud services vpc-peerings update \ --network=VPC_NETWORK \ --ranges=ALLOCATED_RANGES \ --service=servicenetworking.googleapis.com \ --force |
| 任何针对表对用户 'root'@'%' 拒绝的命令。 | 用户不具备执行此操作所需的所有权限。
请尝试以下操作:
|
| 错误消息 | 问题排查 |
|---|---|
| 错误请求 | 此消息可能有多种原因。Illegal Argument 是最常见的一种。在这种情况下,请求使用不正确的参数或参数的无效值。对于许多其他原因,错误消息可能包含有用的提示。对于 |
| 错误消息 | 问题排查 |
|---|---|
| 无法修改 CreateConnection 中分配的范围。请使用 UpdateConnection。 | 在修改或移除分配的范围后,VPC 对等互连未更新。
您需要修改专用连接。使用以下命令,并务必使用 gcloud services vpc-peerings update \ --network=VPC_NETWORK \ --ranges=ALLOCATED_RANGES \ --service=servicenetworking.googleapis.com \ --force |
| 对等方重置了连接。 | 如果您正尝试执行导出,但 Cloud Storage 在特定时间范围内未收到任何数据,则连接会重置。 请尝试使用 |
| Constraints/sql.restrictAuthorizedNetworks。 | 克隆操作被 Authorized Networks 配置阻止。 Google Cloud 控制台的“连接”部分中为公共 IP 地址配置了 Authorized Networks,并且出于安全考虑,不允许克隆。
如果可以,请移除 Cloud SQL 实例中的所有 |
由于文件组 PRIMARY 中的磁盘可用空间不足,无法为数据库 database_name 分配新页面。 |
PRIMARY 文件组(数据库中的主文件组和默认文件组)已空间不足。使用 请考虑以下解决方案:
|
| 错误消息 | 问题排查 |
|---|---|
数据库 user 不存在。 |
gcloud sql connect --user 仅适用于默认的 postgres 用户。使用默认用户进行连接,然后更改用户。 |
| 磁盘已满。 | 主实例磁盘大小可能在副本创建期间变满。
对主实例进行修改以将其升级为更大的磁盘。 |
| 错误消息 | 问题排查 |
|---|---|
| 未能创建子网。 | IP 地址范围中没有更多可用的地址。
在分配的 IP 范围中找不到可用块。请为该服务提供商分配新的范围。 分配的 IP 范围中没有更多的可用地址。 请考虑以下可能出现的情况:
对于上述每种场景,您可以选择展开现有 IP 范围,也可以选择分配其他 IP 范围给专用服务连接。 如果您要分配新的范围,请注意不要创建与任何现有分配重叠的分配。 创建新的 IP 地址范围后,使用以下命令更新 VPC 对等互连: gcloud services vpc-peerings update \ --service=servicenetworking.googleapis.com --ranges=OLD_RESERVED_RANGE_NAME,NEW_RESERVED_RANGE_NAME \ --network=VPC_NETWORK --project=PROJECT_ID \ --force 如果要扩展现有分配,请注意只能扩大分配范围,不能缩减分配范围。例如,如果原始分配是 10.0.10.0/24,则新分配至少为 10.0.10.0/23。 一般来说,如果从 /24 分配开始,对于每个条件(额外的实例类型组、额外的区域),将“/子网掩码位数”递减 1 是一种较好的做法。例如,如果尝试在同一分配中创建两个实例类型组,则从 /24 递减到 /23 就足够了。 扩展现有 IP 地址范围后,使用以下命令更新 VPC 对等互连: gcloud services vpc-peerings update \ --service=servicenetworking.googleapis.com --ranges=RESERVED_RANGE_NAME \ --network=VPC_NETWORK \ --project=PROJECT_ID \ --force |
| 错误消息 | 问题排查 |
|---|---|
| (gcloud.sql.connect) 您的客户端似乎没有 IPv6 连接,并且数据库实例没有 IPv4 地址。 | 您正尝试使用 Cloud Shell 连接到您的专用 IP 实例。
目前不支持从 Cloud Shell 连接到仅使用专用 IP 地址的实例。 |
转储表时获取的数据包超过 max_allowed_packet 字节 |
数据包超过设置所允许的数据包大小。
将 如需详细了解如何使用 |
| 错误消息 | 问题排查 |
|---|---|
| InnoDB:写入文件 ./ibtmp1 在偏移 XXXX 处失败,应已写入 YYYY 字节,但仅写入 0 个。 | 实例在进行自动备份时达到硬性限制。
检查确认您的操作系统和文件系统支持此大小的文件。检查确认磁盘未满,或者磁盘配额未用尽。您可以通过 Google Cloud 控制台申请增加配额,也可以修改实例以将其升级为更大的磁盘。 |
| 内部错误。 | 项目可能缺少此功能所需的 Service Networking 服务账号。 如需修复服务权限,请停用 |
| 请求无效:实例的 Service Networking 配置不正确。 | 未在项目中启用 Service Networking API。在您的项目中启用 |
| 相应实例不符合创建副本的条件。 | 主实例不满足复制的必要要求。如需查看要求列表,请参阅复制限制。 |
| 错误消息 | 问题排查 |
|---|---|
| 用户“XXX”登录失败。 | 确认用户拥有要尝试连接的实例和数据库的权限,并确保使用了正确的凭据。 |
| 登录名“test”拥有一个或多个数据库。在删除登录名之前,请先更改相应数据库的所有者。 | 如果您想删除与不再活跃的数据库所有者关联的用户登录信息,必须先分配新的数据库所有者。 |
| 错误消息 | 问题排查 |
|---|---|
| 元数据表被锁定。 | 另一个查询、进程或事务阻止了查询并锁定表。 找到锁定表的进程并停止该进程。
|
| 错误消息 | 问题排查 |
|---|---|
| 网络关联失败。 | 未在项目中启用 Service Networking API。在您的项目中启用 |
| 错误消息 | 问题排查 |
|---|---|
| 操作失败,因为正在进行其他操作。 | Cloud SQL 中的大多数操作是同步的。一次只能运行一个。 等待上一个操作完成后,再开始另一个操作。 |
| 操作对此实例无效。 | 此错误从对 instances.restoreBackup 的 API 调用返回,这意味着您无法从备份恢复到存储空间大小 (XX GB) 比备份大小 (YY GB) 小的实例。对目标实例进行修改以增加其存储空间大小。 |
| 错误消息 | 问题排查 |
|---|---|
| 用户“postgres”的密码身份验证失败。 | 创建新的 Cloud SQL for PostgreSQL 实例时,系统会创建默认管理员用户 postgres,但不会创建密码。您需要为此用户设置密码,然后用户才能登录。 |
| 错误消息 | 问题排查 |
|---|---|
| 已超出配额。 | 您已达到每分钟或每日配额的上限。查看 Cloud SQL 的配额和限制。
通过 Google Cloud 控制台申请增加配额。 |
| 错误消息 | 问题排查 |
|---|---|
| 保留剩余的连接槽。 | 已达到允许的连接数上限。
增加 |
| 请求缺少有效的 API 密钥。 | 您可能没有有效的服务账号密钥 JSON 文件,或者该文件可能未存储在预期位置。 验证 |
| 错误消息 | 问题排查 |
|---|---|
| 指定的键过长;键长度上限为 767 字节。 | 外部主实例可以设置变量 innodb_large_prefix。在创建副本时,将 |
| SSL 错误:填充无效。 | 服务器证书错误。
创建新的服务器证书并变换。 |
| 发生了系统错误。 |
请尝试以下操作 ...
|
| 错误消息 | 问题排查 |
|---|---|
| 表定义已更改。 | 在导出过程中,表发生了更改。
如果在导出操作期间使用以下语句,则转储事务可能会失败:
从转储操作中移除所有这些语句。 |
| 临时文件大小超出 temp_file_limit。 | 对于您的数据库用量,temp_file_limit 标志设置得太低。
增加 |
| 表 db.table 不存在 | 如果在 MySQL 重启后一个或多个 InnoDB 表消失,并且 MySQL 错误日志同时存在以下警告,则是因为外键和引用键列不同步。[Warning] InnoDB: Load table db.table failed, the table has missing foreign key indexes. Turn off 'foreign_key_checks' and try again. [Warning] InnoDB: Cannot open table db/table from the internal data dictionary of InnoDB though the .frm file for the table exists. See InnoDB troubleshooting for more information. 数据库重启后,MySQL 需要在首次访问时将表加载到 InnoDB 字典缓存中。如果检测到差异,它将阻止访问该表。 mysql> select * from db.table; ERROR 1146 (42S02): Table db.table doesn't exist 对 MySQL 会话停用 您应修复外键不匹配的问题,以避免出现任何其他问题。
|