php - App Engine 上的 CodeIgniter 与 MySQL 连接时超时
问题描述
我在 GCP App Engine 上托管 CodeIgniter API,但无法连接到 GCP Cloud SQL。我创建了实例和数据库,但是当我尝试通过 CI 连接时,出现超时消息错误屏幕
我在 CI 上的数据库配置是:
$db['default'] = array(
'dsn' => 'mysql:unix_socket=/instance_name/instancia;dbname=project_name',
'hostname' => 'http://00.000.00.00',//here i put the public ip from the sql instance
'username' => 'user',
'password' => 'passwd',
'database' => 'projeto',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => yes,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
解决方案
我自己已经为此苦苦挣扎了一段时间,终于破解了!这是我的数据库配置的样子:
$db['default'] = array(
'dsn' => '',
'hostname' => '/cloudsql/PROJECT-NAME:REGION:DATABASE',
'username' => 'USERNAME',
'password' => 'PASSWORD',
'database' => 'DATABASE_NAME',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
// 'db_debug' => TRUE,
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
重要的一点是 dsn 是空的,并且主机名是 unix 套接字的完整路径。其余的应该差不多。
希望对你也有帮助!
推荐阅读
- java - eclipse maven将战争部署到nexus OSS访问被拒绝错误代码401,未经授权
- mysql - 比较具有相同组 ID 的行的值?
- mysql - 带有 WINDOWS10 的 MySQLdump:OS errno 13 - 执行“SELECT INTO OUTFILE”时(权限被拒绝)
- python - 如何将未连接的networkx图分成多个相互不相交的连接图?
- http - Golang 的 (*http.ResponseWriter) Write() 方法是否会阻塞,直到客户端收到数据?
- pandoc - MathJax 括号 - \right 的分隔符缺失或无法识别
- halide - 通过 Cygwin 在 Windows 环境中使用 Linux 命令编译 Halide 程序时出错
- javascript - 图表 JS 使用 addData 在 x 轴上添加标签
- java - 使用 Java 加入 Firebase 实时数据库?
- amazon-web-services - AWS放大graphql突变:不能为不可为空的字段返回null