我有一个.NET Core API目前正在App Engine中运行,一切都很好。我通过以下谷歌提供的示例连接到数据库,在app.yaml
:中定义云sql实例
beta_settings:
cloud_sql_instances: <sql connection name>
以及环境变量,如DB_HOST: cloudsql
和其他凭据。请注意,我使用的是自定义运行时,并自己提供dockerfile。
在尝试将我的应用程序部署到Cloud Run时,我尝试以与在app.yaml
文件中提供环境变量相同的方式设置环境变量,以及提供云sql连接名称并添加它(注意,我看不到我想要的连接名称,在现有的4个sql实例中,我只能看到2个(,这与我在app.yaml
中使用的相同。部署失败并出现错误:
Unhandled exception. Microsoft.Data.SqlClient.SqlException (0x80131904): A network-related or
instance-specific error occurred while establishing a connection to SQL Server. The server was
not found or was not accessible. Verify that the instance name is correct and that SQL Server
is configured to allow remote connections. (provider: TCP Provider, error: 35 - An internal
exception was caught)
我试着关注这篇帖子,但仍然没有什么变化。其他尝试:
- 我已经将SQL实例配置为分配了专用IP,并尝试在
DB_HOST
字段中使用它,但仍然出现异常 - 尝试将SQL连接名称更改为其他实例(适当更改环境变量(,但仍然得到异常
- 创建了一个VPC连接器并将其添加到我的修订版中,仍然出现相同的错误
如何解决此问题?我做错了什么?
-
如果您正在迁移现有的web应用程序,请参阅将您的服务迁移到云运行。
-
检查您的应用程序是否符合云运行的所有标准。
-
已检查有关从运行在Cloud Run中的服务连接到Cloud SQL实例的文档。配置Cloud Run的步骤取决于您分配给Cloud SQL实例的IP地址类型。您还可以检查连接选项。
-
您可以遵循以下关于Google Cloud SQL与MySQL for Cloud Run的示例。
-
查看这篇SO文章,了解使用Cloud Run的dotnetcore应用程序的正确Cloud SQL连接字符串语法可能会有所帮助。
好吧,所以我按照这个快速启动指南成功地实现了它,有很多关于云运行连接到SQL的不同来源真的很令人困惑。添加指南中提到的环境变量解决了这个问题。