本页面讨论了 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 。在您的项目中启用 |
错误消息 | 问题排查 |
---|---|
元数据表被锁定。 | 另一个查询、进程或事务阻止了查询并锁定表。 找到锁定表的进程并停止该进程。
|
错误消息 | 问题排查 |
---|---|
网络关联失败。 | 未在项目中启用 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 会话停用 您应修复外键不匹配的问题,以避免出现任何其他问题。
|
(超时)在导出期间。 | CSV 和 SQL 格式的导出方式不同。SQL 格式包含整个数据库,可能需要更长时间才能完成。
使用 CSV 格式,并运行多个较小的导出作业,以减小每项操作的规模和长度。 |
连接数量过多。 | 将 max_connections 标志值设置得过高可能会导致此错误。这也可能是由启用顺序不一致的标志造成的。降低 |
错误消息 | 问题排查 |
---|---|
没有连接权限。 | 由于在多个级层进行授权,因此可能存在多个原因:
请尝试以下操作 ...
|
information_schema 中的表 COLUMN_STATISTICS 未知。 |
如果您使用 MySQL 8.0 中的 mysqldump 二进制文件转储 MySQL 5.7 数据库中的数据,并将其导入 MySQL 8.0 数据库,则会发生这种情况。
如果您转储 MySQL 5.7 数据库中的数据,并将其导入 MySQL 8.0 数据库,请确保使用 MySQL 5.7 中的 |
错误消息 | 问题排查 |
---|---|
x509:证书对任何名称均无效。 | 已知问题:Cloud SQL Proxy Dialer 目前与 Go 1.15 不兼容。 在问题获得修复之前,请参阅 GitHub 上的这一讨论,其中包括了解决方法。 |
未知错误
下表显示了 Unknown Error
可能发生的一些已知情况,并列出了具体补救措施(如适用)。不过,此列表并非完整列表。如果您在表中未找到您的情况,请参阅 Cloud SQL 的公开问题跟踪器。如果您在此处未找到问题,请考虑提交报告或查看其他支持选项。
操作 | 可能的问题 | 可以尝试的操作 |
---|---|---|
添加用户 | 如果数据库中已存在用户,当您尝试添加该用户时,可能会发生此错误。 | 检查以确保该用户不在数据库中。 |
备份 | 如果您在自动或手动备份期间看到此错误消息,可能是实例磁盘已满。 | 如果临时文件大小占用过多空间,您可以重启实例以移除该文件并释放磁盘可用空间。否则,您可能需要将实例升级为更大的磁盘。 |
克隆 | 当所选可用区中的资源不足时,可能会发生这种情况。 | 请尝试相应区域中的另一个可用区,或者稍后重试。 |
创建实例 |
|
|
导出 | 如果您在尝试将数据库导出到 Cloud Storage 存储桶时看到此错误,则可能是带宽问题导致转移失败。 | Cloud SQL 实例可能与 Cloud Storage 存储桶位于不同区域。从一个大洲读取数据并将数据写入另一个大洲涉及很多网络用量,可能会导致类似的间歇性问题。 |
故障切换(自动) | 当服务检测到主实例仍保持响应时,自动故障切换操作可能会产生此错误消息。 | 在这种情况下,您无需执行任何操作。不会发生故障切换,因为不需要。 |
导入 | 导入文件可能包含需要超级用户角色的语句。 | 修改该文件以移除任何需要超级用户角色的语句。 |
Cloud SQL 还会使用一些第三方二进制文件(例如 mysqld
),它们可能会生成未知的错误消息。此类错误是第三方二进制文件的内部错误,不在 Cloud SQL 的范围内。但是,有时可以在 Cloud SQL 日志文件中找到更具体的错误。
有时,错误代码是未知的错误代码。在这种情况下,完整消息可能是 Unknown Error Code
。