【发布时间】:2017-05-14 14:21:25
【问题描述】:
过去 2 天我一直在尝试从 appengine 连接到 cloudsql,我能够通过 IP 从 linux 网络服务器连接,但是不能从具有相同设置的 app engine 连接。
我的连接字符串如下: 请注意实际的 appid 以及 dbname 已被替换
在 app.yaml 中
env_variables:
MYSQL_DSN: mysql:unix_socket=/cloudsql/appid:us-central1:sql-instance-1;dbname=dbname
MYSQL_USER: root
MYSQL_PASSWORD: ''
在php文件中
$dsn = getenv('MYSQL_DSN');
$user = getenv('MYSQL_USER');
$password = getenv('MYSQL_PASSWORD');
if (!isset($dsn, $user) || false === $password) {
throw new Exception('Set MYSQL_DSN, MYSQL_USER, and MYSQL_PASSWORD environment variables');
}
$conn = new PDO($dsn, $user, $password);
以上内容来自https://cloud.google.com/appengine/docs/standard/php/cloud-sql/ 我尝试过使用密码,而不是使用密码。我尝试了用户名root,作为带有密码的用户名和没有用户名的用户名。
我正在使用第二代设置和 flex php 环境,我一直收到的错误如下:
短错误
SQLSTATE[HY000] [2002] No such file or directory
完全错误
Fatal error: Uncaught PDOException: SQLSTATE[HY000] [2002] No such file or directory in /app/dbconn.php:12 Stack trace: #0 /app/dbconn.php(12): PDO->__construct('mysql:unix_sock...', 'root', '') #1 /app/api.user.php(2): include_once('/app/dbconn.php') #2 {main} thrown in /app/dbconn.php on line 12
我现在真的没有想法了。请注意,sql 和 app 都在同一个项目中。
【问题讨论】:
-
你能解决这个问题吗?我得到了同样的一个。
-
@IlkerBaltaci 我从来没有找到解决方案,最终改用他们的虚拟机/计算引擎。
标签: php google-app-engine google-cloud-sql