Symfony 3 - 驱动程序中发生异常:找不到驱动程序

时间:2017-11-04 16:39:58

标签: php mysql symfony pdo doctrine-orm

我只是尝试使用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

7 个答案:

答案 0 :(得分:11)

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

安装软件包
sudo apt-get install php-mysql

我希望这可以解决您的问题。

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

 sudo service apache2 restart.

答案 1 :(得分:1)

我刚刚重新启动操作系统解决了我的问题。

答案 2 :(得分:0)

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

祝你有个美好的一天。

答案 3 :(得分:0)

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

using Dapper;

string sql = "UPDATE table SET column = CONCAT(column, @s) WHERE id = @id";
using (var connection = new SqlConnection(yourConnectionString))
{
        try
        {
            connection.Execute(sql, new { @id = yourid, s = string });
        }
        catch (SqlException e)
        {
            Debug.WriteLine(e);
        }
}

答案 4 :(得分:0)

对于我(在Windows中),我已经安装了mysql driver

答案 5 :(得分:0)

对我来说,我在/etc/php/5.6/cli/php.ini中添加了这两行

/usr/lib/php/5.6/php.ini-development中已经存在的

extension = pdo.so

extension = pdo_mysql.so

然后sudo服务apache2重新启动了

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

希望这对将来的其他任何人都有用。

答案 6 :(得分:0)

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