【问题标题】:Unknown INTERNAL_ERROR trying to remove Google Cloud SQL postgres database尝试删除 Google Cloud SQL postgres 数据库的未知 INTERNAL_ERROR
【发布时间】:2018-07-26 13:27:36
【问题描述】:

我创建了一个 Google SQL 实例和一些数据库。我需要删除一个数据库,但由于某种原因,目前出现未知错误。

这是调试输出:

$ gcloud sql databases delete myDatabase -i myInstance --verbosity debug

DEBUG: Running [gcloud.sql.databases.delete] with arguments: [--
instance: "myInstance", --verbosity: "debug", DATABASE: "myDatabase"]
The database will be deleted. Any data stored in the database will be
destroyed. You cannot undo this action.

Do you want to continue (Y/n)?

Deleting Cloud SQL database...failed.
DEBUG: (gcloud.sql.databases.delete) INTERNAL_ERROR
Traceback (most recent call last):
  File "~/google-cloud-sdk/lib/googlecloudsdk/calliope/cli.py", line 797, in Execute
    resources = calliope_command.Run(cli=self, args=args)
  File "~/google-cloud-sdk/lib/googlecloudsdk/calliope/backend.py", line 757, in Run
    resources = command_instance.Run(args)
  File "~/google-cloud-sdk/lib/surface/sql/databases/delete.py", line 84, in Run
    'Deleting Cloud SQL database')
  File "~/google-cloud-sdk/lib/googlecloudsdk/api_lib/sql/operations.py", line 81, in WaitForOperation
    sleep_ms=_BaseOperations._INITIAL_SLEEP_MS)
  File "~/google-cloud-sdk/lib/googlecloudsdk/core/util/retry.py", line 226, in RetryOnResult
    if not should_retry(result, state):
  File "~/google-cloud-sdk/lib/googlecloudsdk/api_lib/sql/operations.py", line 65, in ShouldRetryFunc
    raise result
OperationError: INTERNAL_ERROR
ERROR: (gcloud.sql.databases.delete) INTERNAL_ERROR

在 Google 文档中没有任何关于它的条目。有人有这个错误吗?

任何帮助将不胜感激。

谢谢!

【问题讨论】:

  • 删除对我有用的数据库的唯一方法是连接到实例并运行“DROP DATABASE”。但是,从 gcloud 或 Web 控制台它不起作用。

标签: postgresql google-cloud-sql


【解决方案1】:

我的直觉是数据库仍然有打开的连接阻止你删除它。

我认为这个问题在 postgres 数据库中比在 MySQL 数据库中更常见,因为在 postgres 中更有可能出现连接滞后(这是 postgres 问题而不是 GCP 问题)。

要对此进行测试,请连接到 Cloud SQL 实例的 shell 并运行以下命令,以防止将来与数据库建立任何连接:

REVOKE CONNECT ON DATABASE DATABASE_NAME FROM public; 

然后,连接到您要删除的数据库,并通过发出以下命令终止与当前数据库的所有连接:

SELECT pid, pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = current_database() AND pid <> pg_backend_pid(); 

退出 postgres shell。

我还建议禁用自动备份。如果正在进行自动备份,如果您同时尝试删除数据库,则会产生异常。

现在再次尝试gcloud sql databases delete 命令。

【讨论】:

  • 谢谢你。关闭连接(在我的情况下是代理)解决了它
【解决方案2】:

我有同样的问题。 我的问题是数据库不属于 postgres 用户。

为了能够使用数据库所有者用户连接到数据库,您需要在云 sql“数据库”选项卡中创建数据库。像您的用户名一样命名数据库。 然后你应该可以登录了:

gcloud sql connect <instance name> --user=<owner of database> --quiet

现在执行

DROP DATABASE <database name>;

如果成功,应该是响应: 删除数据库

【讨论】:

    【解决方案3】:

    我在 GCP 中删除云 SQL 上的 MySQL 数据库时遇到了同样的问题。事实证明,我需要先禁用数据库的一些配置,然后才能按照here 的说明删除它。

    【讨论】:

      猜你喜欢
      • 2015-02-15
      • 2018-12-25
      • 1970-01-01
      • 2021-08-15
      • 1970-01-01
      • 2021-01-04
      • 2018-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多