1

我正在配置一个 cakePHP 应用程序,但该应用程序似乎没有成功连接到数据库,我收到以下错误:

Cake is NOT able to connect to the database.

Database connection "Mysql" is missing, or could not be created.

我将其重命名为database.php.defaultdatabase.php代码如下:

class DATABASE_CONFIG {

    public $default = array(
        'datasource' => 'Database/Mysql',
        'persistent' => false,
        'host' => 'localhost:8889',
        'login' => 'root',
        'password' => 'root',
        'database' => 'cakephpdb',
        'prefix' => '',
        'encoding' => 'utf8',
    );
}

实际上,我知道 CakePHP 使用 PDO 驱动程序连接到 DB,所以我尝试运行一个单独的文件来测试 PDO 是真还是假:

<?php

var_dump( extension_loaded('pdo_mysql') );

?> 

这是错误的:

bool(false) 

我试图在php.ini文件中启用 PDO:

extension=php_pdo_mysql.so

重新启动 MAMP,但 cakePHP 应用程序仍然出现相同的错误。我错过了什么吗?您如何确保在您的案例中启用 PDO?提前谢谢。

编辑:

运行 phpinfo() 时,未启用 PDO_MySQL: 在此处输入图像描述

根据 phpinfo() 输出,php.ini 路径如下:

/Applications/MAMP/bin/php/php5.4.10/conf 

在此处输入图像描述

所以我尝试php.ini在该路径编辑文件,这是相关设置:

    extension=imap.so
    extension=yaz.so
    extension=mcrypt.so
    extension=gettext.so
    extension=pgsql.so
    extension=pdo_pgsql.so
    extension=pdo_mysql.so

pdo_mysql.default_socket=/tmp/mysql.sock

mysql.default_socket = /tmp/mysql.sock

另外,我尝试在 php 脚本中测试数据库连接:

try {
    $dbh = new PDO('mysql:host=localhost;dbname=db_name', 'localhost', 'root');
    echo '<br /> success';
} catch (PDOException $e) {
    print "Error !: " . $e->getMessage() . "<br/>";


    die();
}

而且我总是出现以下错误:

Error !: could not find driver

所以PDO_Mysql驱动程序没有加载,这从 phpinfo() 输出中很清楚。出来解决这个问题?

4

1 回答 1

0

您确认是否更新了正确的 php.ini?对于 XAMPP,有一个 php.ini 用于控制台,另一个用于 Web 服务器。您可能正在更新不正确的。

于 2014-01-27T09:58:18.270 回答