我已阅读类似的问题并尝试了他们所说的内容,但我无法让我的 App Engine 应用连接到我的 Cloud SQL 实例。
以下是我发现的应该是正确的:
index.php
$servername = null;
$username = "root";
$password = "rootPassword";
$database = "NewApp";
$port = null;
$socket = "/cloudsql/newapp-edc:us-central1:newapp0";
$connection = new mysqli($servername,
$username,
$password,
$database,
$port,
$socket);
app.yaml
runtime: php72
entrypoint: serve index.php
env_variables:
# Replace USER, PASSWORD, DATABASE, and CONNECTION_NAME with the
# values obtained when configuring your Cloud SQL instance.
MYSQL_USER: root
MYSQL_PASSWORD: rootPassword
MYSQL_DSN: mysql:dbname=NewApp;unix_socket=/cloudsql/newapp-edc:us-central1:newapp0
# Use the connection name obtained when configuring your Cloud SQL instance.
beta_settings:
cloud_sql_instances: "newapp-edc:us-central1:newapp0"
我已经浏览了所有类似的问题和答案以及所有相关的 Google 文档,但我找不到答案。
当前方法导致“连接被拒绝
”,我认为,这意味着我的套接字与之前所说的一样正确,“没有这样的文件或目录
”。一切似乎都是正确的,我拥有同一项目中所有应用的权限,并且 App Engine 应用和 Cloud SQL 实例位于同一项目中,因此这不应该是问题。
最佳答案
正如本文中提到的类似post ,如果您想将 Google App Engine 连接到 Cloud SQL,则需要启用 Cloud SQL 代理,因为 Google App Engine 通过代理从 Google 服务器内部连接到您的 Cloud SQL 实例。
如果您不想使用 Cloud SQL 代理,则需要从 Cloud SQL 实例授权您的 IP,如 here. 所示。
我希望这会有所帮助。
关于php - 在同一项目中使用 mysqli 将 App Engine 应用程序连接到 Google SQL 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59515031/