php - Doctrine 无法连接到链接的 docker 容器中的 MYSQL 数据库

标签 php mysql ubuntu doctrine-orm zend-framework2

我使用两个 Docker 容器,一个运行 ubuntu 和一个 apache Web 服务器,另一个运行 mysql 服务器。容器已链接,我可以从 ubuntu 容器连接到 mysql 服务器。对于我在 ubuntu 容器中使用的连接:

mysql -u root -h mysql

其中第二个“mysql”是容器的名称。我也可以通过容器 ID 连接到它,因此该连接就像从 Windows 环境连接到数据库一样有效。

不起作用的是 ubuntu 容器中的 PHP 应用程序中从学说到数据库的连接。

配置如下:

'doctrine' => array(
        'connection' => array(
            'orm_default' => array(
                'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver',
                'params'      => array(
                    'host'     => 'mysql',
                    'port'     => '3306',
                    'user'     => 'root',
                    'password' => '',
                    'dbname'   => 'db_name',
                    'charset'  => 'utf8',
                )
            )
        ),
)

但是我收到错误消息

Uncaught PDOException: could not find driver in /var/www/vendor/zendframework/zend-servicemanager/src/ServiceManager.php

Zend\ServiceManager\Exception\ServiceNotCreatedException: An abstract factory could not create an instance of doctrine.entitymanager.ormdefault(alias: doctrine.entitymanager.orm_default). in /var/www/vendor/zendframework/zend-servicemanager/src/ServiceManager.php 

有谁知道如何解决这个问题以及错误到底来自哪里?

我已经尝试将容器 ID 作为“主机”输入,并注释掉“密码”字段,因为它未被使用。

提前致谢

乔纳森

最佳答案

您的系统需要允许 pdo_mysql,这似乎不是连接问题,而是 php 配置问题。

你可以尝试在你的 php 容器中执行这个命令吗

php -i | grep pdo_mysql

只是为了了解php是否有这个模块

关于php - Doctrine 无法连接到链接的 docker 容器中的 MYSQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37940788/

相关文章:

php - 递归列表函数

php - 如何统计一年中每个月的mysql记录按一个字段分组

java - 如何将 IF NOT EXISTS 语句用于 ALTER TABLE 语句?

mysql - 如何优化两个 MySQL 表之间的连接?

C++ 具有返回值的匿名函数

java - 在 eclipse 中将 Java 插件转换为 PHP

php - 将数据从文件写入数据库并更新旧数据

mysql - 仅当值不存在时返回行

MySQL从不同的Master复制不同的数据库

linux - 错误 : NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver