【问题标题】:Symfony 3 - An exception occurred in driver: could not find driverSymfony 3 - 驱动程序中发生异常:找不到驱动程序
【发布时间】:2017-11-04 16:39:58
【问题描述】:

我只是尝试使用 symfony 3,我正在使用 Doctrine ORM 将数据插入数据库。 当我尝试运行我的查询时

$customer = new Customer();
$customer->setAddress('Some Address');
$customer->setName('Customer 1');

$order->setQuantity('100');
$order->setDate(date('Y-m-d'));
$order->setCustomer($customer);

$em = $this->getDoctrine()->getManager();
$em->persist($customer);
$em->persist($order);
$em->flush();

但它返回一个异常:

Uncaught PHP Exception Doctrine\DBAL\Exception\DriverException: "An exception occurred in driver: could not find driver" at /home/hei/Sites/practice/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php line 121

Parameters.yml:

parameters:
    database_host: 127.0.0.1
    database_port: null
    database_name: practice
    database_user: root
    database_password: null

Config.yml

doctrine:
    dbal:
        driver: pdo_mysql
        host: '%database_host%'
        port: '%database_port%'
        dbname: '%database_name%'
        user: '%database_user%'
        password: '%database_password%'

我还检查扩展是否通过 php -m 和 phpinfo() 启用和加载。它说 PDO 和 PDO_Mysql 已启用。

然后在php.ini中加入这两行:

extension=pdo.so
extension=pdo_mysql.so

但我仍然遇到相同的 PDO 异常。

我的操作系统是 Ubuntu 17.1

【问题讨论】:

  • cli 和 web 的 php 版本是否相同?创建脚本<?php phpinfo(); 并检查那里是否有mysql扩展

标签: php mysql symfony pdo doctrine-orm


【解决方案1】:

我相信您的系统中缺少 php-mysql 包。使用命令安装包

sudo apt-get install php-mysql

我希望这能解决您的问题。

我认为您还需要重新启动 Apache 才能解决此问题。安装 php-mysql 后使用以下命令重启 Apache

 sudo service apache2 restart.

【讨论】:

    【解决方案2】:

    对我来说,我在 /etc/php/5.6/cli/php.ini 中添加了这两行,因为它们已经存在于

    /usr/lib/php/5.6/php.ini-development

    extension=pdo.so
    
    extension=pdo_mysql.so
    

    然后做了:

    sudo service apache2 restart
    

    然后我可以将实体刷新到数据库。

    希望这对其他人有用。

    【讨论】:

      【解决方案3】:

      在我的系统 (Fedora) 上,需要一个名为 php-mysqlnd 的包。我通过运行安装它:

      dnf install php-mysqlnd
      

      【讨论】:

        【解决方案4】:

        首先,您必须将 MySQL 端口号从 null 更改为 3306。就是这样。 我认为你没有 MySQL 密码,这就是你没有写任何东西的原因。

        祝你有美好的一天。

        【讨论】:

        • 端口参数上的“null”表示您使用的是默认端口“3306”,所以我认为这不会解决问题,我认为存在相关问题到 php.ini 上的 mysql 驱动程序扩展
        【解决方案5】:

        在我的情况下(在 Windows 中)我已经安装了mysql driver

        【讨论】:

          【解决方案6】:

          在 WAMPServer 和可能的其他配置中,您的命令行 PHP 可能有一个单独的 php.ini。确保在正确的 .ini 中启用模块(最好是两个 ini)

          【讨论】:

            猜你喜欢
            • 2021-06-12
            • 2019-08-06
            • 2022-11-23
            • 1970-01-01
            • 2017-09-01
            • 2016-07-14
            • 2020-09-26
            相关资源
            最近更新 更多