php - 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>
解决方案
在 Symfony 4 项目中经历过同样的情况。我对此的发现:
当我第一次在 App 引擎上部署应用程序并设置主机名时:
'主机名' => '本地主机'
我收到了这个错误:
SQLSTATE[HY000] [2002] 没有这样的文件或目录
后记我刚刚删除了上面的行 ('hostname' => 'localhost') 并再次部署了应用程序。这对我有用
在接下来的部署中,我再次添加了带有 localhost 的主机名,它起作用了。
结论
- 第一次部署:删除/删除主机名参数
- 首次部署后,您可以再次使用设置主机名 ('hostname' => 'localhost')
推荐阅读
- java - Java <-> Angular Dto
- javascript - 使用 node.js 从 Spring Boot 2 响应中读取传入的 HTTPS 标头
- javascript - 如何在 PHP laravel 或 Java Script 中比较 3 个不同的数组
- javascript - 在 Javascript 中为几乎相同的输入获取不同的 typeof
- c++ - 如何在 C++ 中为 copy_if 等定义“一元谓词”?
- scala - 错误:未知参数“idea-shell”
- c# - 如何使用 serialPort DatatReceived 事件更改 tabControl 中的活动选项卡?
- asp.net - 将点击事件添加到日历内的动态按钮
- ruby-on-rails - Rails - 茧/简单表单嵌套字段未显示
- java - 对话流 startListening()