CDbConnection无法打开数据库连接:在Yii中找不到驱动程序

时间:2013-12-05 13:25:24

标签: php mysql yii zend-studio yii-cactiverecord

在yii框架中尝试连接mysql时显示

“CDbConnection无法打开数据库连接:找不到驱动程序”错误

php代码:

     'db'=>array(
        'class' => 'CDbConnection',
        'connectionString' => 'mysql:host=localhost:3306;dbname=testdrive',
        'emulatePrepare' => true,
        'username' => 'root',
        'password' => 'root',
        'charset' => 'utf8',
    ), 

我的php驱动程序已经启用,但它显示相同的错误

我正在使用zend studio,zend服务器

我怎么能解决这个问题?

8 个答案:

答案 0 :(得分:6)

我正在使用Linux Mint ..在我的情况下,我需要

apt-get install php5-mysql 

因为我正在将我的环境从Lampp转移到Apache + PHP + MySQL而且我不得不在php.ini中改变很多东西

答案 1 :(得分:3)

您应该检查的事项

首先,您应该检查安装的pdo_drivers的phpinfo()。

如果你使用IIS服务器,你应该检查是否安装了php扩展。

检查php.ini是否正确给出extensions_dir

检查php中的ext文件夹是否包含pdo_mysql dll

有时候由于zend服务器安装可能会出现问题。你应该检查zend服务器是否正确使用php扩展

之后使用以下函数检查简单的php-mysql连接

mysql_connect('localhost:3306','root','root');
mysql_select_db('testdrive');

如果有效,那么请使用Yii,Slim,Zend php-mysql连接

答案 2 :(得分:2)

我正在使用Linux Ubuntu。

我有同样的问题,但在我的情况下,我必须安装php-mysql。

sudo apt-get install php5-mysql

并重启服务

sudo service apache2 restart

我希望那可以帮到某人

答案 3 :(得分:1)

尝试使用Ubuntu中的以下命令安装Sqlite驱动器

sudo apt-get install sqlite php5-sqlite

现在使用以下命令重新启动Apache服务器

service apache2 restart

这两步解决了我的问题。希望它能解决其他问题......

答案 4 :(得分:1)

在我的情况下,我还必须启用pdo_sqlite模块,这解决了这个问题。它是在HOSTiq.com.ua托管上。我想它可以节省几个小时的搜索时间。

答案 5 :(得分:1)

我的解决方案是:

    cache' => array(
        'class' => 'system.caching.CDbCache',
        //'class' => 'system.caching.CFileCache',
        'connectionID'=>'db', // <<< THIS IS THE ISSUE
    ),

如果未设置connectionID,则db缓存默认为/ protected / data目录中的mysqli数据库,如果系统上未安装mysqli驱动程序,则无法访问该数据库(常见问题与专用服务器,DO drop,xampp / wamp ......)

或者,您可以禁用数据库缓存并改为启用fileCache。

答案 6 :(得分:0)

在当前版本的Yii中,您有一个目录要求。它将启动 Yii Requirement Checker 并向您显示缺少的内容。

之后,在 main.php

中获取连接字符串
'db'=>array(
            'connectionString' => 'mysql:host=deathstar;port=3306;dbname=database',
            'emulatePrepare' => true,
            'username' => 'user',
            'password' => 'pass',
            'charset' => 'utf8',
            'tablePrefix' => 'tbl_'
),

在我的情况下,这是非常愚蠢的事情。我在

中忘了 mysql:
'connectionString' => 'mysql:host=deathstar;port=3306;dbname=database'

答案 7 :(得分:0)

如果你只是用这个

得到它
apt-get install php-mysql

你可以试试这个

apt-get install php-pear php5-dev libmysqlclient15-dev
pecl install pdo
pecl install pdo_mysql

我发现谷歌搜索它是唯一适用于我的