0

I'm following this tutorial except that I do not wish to use Silex.

I have set up a Cloud SQL Second Generation instance and a local proxy, which I can successfully connect to using SQL Workbench. This is the code I'm using to connect with:

define('DBH_SOCKET', '/cloudsql/project-***:us-east1:instance-****');
define('DBH_NAME', 'testdb');
define('DBH_USER', 'root');
define('DBH_PASSWORD', '****');

$pdo = "mysql:unix_socket=".DBH_SOCKET.";dbname=".DBH_NAME.";charset=utf8";

try {
    $db = new PDO($pdo, DBH_USER, DBH_PASSWORD);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e){
    echo 'Connection failed: ' . $e->getMessage();
}
echo '<br />';
if($db) echo 'YAY'; else echo 'NAY';

It works absolutely fine when I deploy the app an visit project-***.appspot.com, but the connection fails when I try to work locally.

Connection failed: SQLSTATE[HY000] [2002] No such file or directory.

I know this question has been asked before in various contexts, but none of their solutions are working for me or don't directly apply. I have added this to my app.yaml file with no change in results:

env_variables:
  # Replace project, instance, database, user and password with the values obtained
  # when configuring your Cloud SQL instance.
  MYSQL_DSN: mysql:unix_socket=/cloudsql/project-****:us-east1:instance-****;dbname=testdb
  MYSQL_USER: root
  MYSQL_PASSWORD: '****'

beta_settings:
  cloud_sql_instances: "project-****:us-east1:instance-****"

Why can't I connect locally using PDO when I can connect locally using my SQL client?

user2250471
  • 1,002
  • 3
  • 10
  • 23

0 Answers0