首页 > 解决方案 > gcloud sql连接不起作用

问题描述

我已经在具有灵活环境的谷歌云APP引擎上上传了一个CodeIgniter项目

连接 SQL 实例时出现以下错误

SQLSTATE[HY000] [2002] 没有这样的文件或目录

文件名:core/CodeIgniter.php

行号:518

应用程序/配置/数据库.php

$db['default'] = array(
    'dsn'   => 'mysql:unix_socket=/cloudsql/<instance-connection-name>;dbname=<data-base-name>',
    'hostname' => 'localhost',
    'username' => USERNAME,
    'password' => PASSWORD,
    'database' => DATABASE,
    'dbdriver' => 'pdo',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

应用程序.yaml

runtime: php
env: flex

runtime_config:
    document_root: .

env_variables:
    MYSQL_USER: USER
    MYSQL_PASSWORD: PASSWORD
    MYSQL_DSN: mysql:dbname=<database>;unix_socket=/cloudsql/<instance-connection-name>

beta_settings:
    cloud_sql_instances: <instance-connection-name>

标签: phpgoogle-app-enginepdogoogle-cloud-datastorecodeigniter-3

解决方案


在 Symfony 4 项目中经历过同样的情况。我对此的发现:

当我第一次在 App 引擎上部署应用程序并设置主机名时:

'主机名' => '本地主机'

我收到了这个错误:

SQLSTATE[HY000] [2002] 没有这样的文件或目录

后记我刚刚删除了上面的行 ('hostname' => 'localhost') 并再次部署了应用程序。这对我有用

在接下来的部署中,我再次添加了带有 localhost 的主机名,它起作用了。

结论

  • 第一次部署:删除/删除主机名参数
  • 首次部署后,您可以再次使用设置主机名 ('hostname' => 'localhost')

推荐阅读