Phalcon, Docker MySQL 连接失败
Phalcon, Docker MySQL connection fails
所以我有 3 个 docker 容器,一个带有 PHP+PhalconPHP,一个带有 MySQL,另一个带有网络服务器。现在在我的主机系统上,我可以连接到 docker 容器中的 MySQL,我也可以使用以下代码连接 PDO
new PDO('mysql:host=mysql;port=1024;dbname=database', 'root', 'password');
但出于某种原因,phalcon 框架无法像这样使用 config.php
文件连接到 MySQL 数据库
return new \Phalcon\Config([
'database' => [
'adapter' => 'mysql',
'port' => 1024,
'host' => 'mysql',
'username' => 'root',
'password' => 'password',
'dbname' => 'database',
'charset' => 'utf8',
],
]);
在这种情况下,出于某种原因我得到了 Can't connect to MySQL server on 'mysql' (111 "Connection refused)
,尽管我 100% 确定我确实可以连接(如之前通过 PDO 连接所证明的那样)。我还尝试对实际的 MySQL 容器 IP 地址进行硬编码,但也不走运。
有什么想法吗?
所以它看起来有点愚蠢 "mistake" 但这是解决方案。
显然,当您使用 Phalcon 开发人员工具构建项目时,它不会使用端口配置初始化数据库,因为它会完全忽略它。您可以通过进入 app/config/services.php
文件并更改 db
服务以也包括端口配置来轻松解决此问题。
$connection = new $class([
'host' => $config->database->host,
'port' => $config->database->port,
'username' => $config->database->username,
'password' => $config->database->password,
'dbname' => $config->database->dbname,
'charset' => $config->database->charset
]);
所以我有 3 个 docker 容器,一个带有 PHP+PhalconPHP,一个带有 MySQL,另一个带有网络服务器。现在在我的主机系统上,我可以连接到 docker 容器中的 MySQL,我也可以使用以下代码连接 PDO
new PDO('mysql:host=mysql;port=1024;dbname=database', 'root', 'password');
但出于某种原因,phalcon 框架无法像这样使用 config.php
文件连接到 MySQL 数据库
return new \Phalcon\Config([
'database' => [
'adapter' => 'mysql',
'port' => 1024,
'host' => 'mysql',
'username' => 'root',
'password' => 'password',
'dbname' => 'database',
'charset' => 'utf8',
],
]);
在这种情况下,出于某种原因我得到了 Can't connect to MySQL server on 'mysql' (111 "Connection refused)
,尽管我 100% 确定我确实可以连接(如之前通过 PDO 连接所证明的那样)。我还尝试对实际的 MySQL 容器 IP 地址进行硬编码,但也不走运。
有什么想法吗?
所以它看起来有点愚蠢 "mistake" 但这是解决方案。
显然,当您使用 Phalcon 开发人员工具构建项目时,它不会使用端口配置初始化数据库,因为它会完全忽略它。您可以通过进入 app/config/services.php
文件并更改 db
服务以也包括端口配置来轻松解决此问题。
$connection = new $class([
'host' => $config->database->host,
'port' => $config->database->port,
'username' => $config->database->username,
'password' => $config->database->password,
'dbname' => $config->database->dbname,
'charset' => $config->database->charset
]);