php - 使用 PHP MySQLi 从 Google Cloud App Engine 连接到 Cloud SQL 不起作用

标签 php mysql mysqli google-cloud-platform google-cloud-sql

我是 Google Cloud 的新员工,需要帮助将标准环境中的 PHP App Engine 与 Google Cloud SQL (MySQL) 连接起来。 它们位于同一区域,并且 MySQL Workbench 的连接有效。在工作台中,我使用 Google SQL 实例的公共(public) IP。 但 MySQLi 给我错误:“连接被拒绝”。我也用 PDO 尝试过,它给了我同样的错误。

这是我的 PHP 代码:

<?php
$host = '127.0.0.1';
$user = 'root';
$dbpassword = 'password';
$database = 'database';
$port = 3306;

$mysqli = new mysqli($host, $user, $dbpassword, $database, $port);
if ($mysqli->connect_errno) {
    die("Verbindung fehlgeschlagen: ".$mysqli->connect_error);
}

这就是 app.yaml:

runtime: php72
handlers:
- url: /css
  static_dir: css

- url: /src
  static_dir: src

- url: /js
  static_dir: js

beta_settings:
  cloud_sql_instances: "project:europe-west3:instanceid=tcp:3306"

我希望任何人都可以帮助我。 谢谢。

编辑: 我也尝试过:

$mysqli = new mysqli(null, $user, $dbpassword, $database, null, "/cloudsql/{connectionstring}");
if ($mysqli->connect_errno) {
    die("Verbindung fehlgeschlagen: ".$mysqli->connect_error);
}

它给了我:“没有这样的文件或目录”

最佳答案

此问题已得到解决 here ,你可以引用最后一个答案,其中进一步说明了如何连接。

您需要确保sqladmin API启用后,在项目根级别添加文件 php.ini(与 app.yaml 相同)并添加以下条目:

Extension = “mysqli.so”

添加一些环境变量(数据源名称、MySQL用户和密码)

MYSQL_DSN: mysql:unix_socket=/cloudsql/datahouse;dbname=mydatabase

MYSQL_USER: root

MYSQL_PASSWORD: 'mypassword'

最后,连接字符串的名称应该是“/cloudsql/project-id”;

$instance_name = "/cloudsql/YOUR_PROJECT_ID_WITHOUT_DB_NAME";

$mysqli = mysqli_connect(null, YOUR_DB_USER ,YOUR_DB_PASS, 'DB_NAME',null,$instance_name);

请告诉我是否可以连接。

关于php - 使用 PHP MySQLi 从 Google Cloud App Engine 连接到 Cloud SQL 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57876899/

相关文章:

PHP 似乎得到了错误的查询结果

php - 在 PHP 中将数字转换为字节

php - 显示在使用 php 从 mysql 检索的内容上的特殊字符

javascript - 查询不会从页面获取变量

php - Drupal 安装问题。奇怪的错误

mysql - 关系中字段类型的逻辑

php - Codeigniter 仅更新第一行

mysql - 大量空白 MySql 行/页

PHP 未将提交的数据上传到数据库

php - 无法加载数据库驱动程序 mysqli!在购物车上