CakePHP 2无法连接到MySQL数据库

时间:2011-10-08 10:46:19

标签: mysql cakephp

使用最新的CakePHP 2.0 RC3,我正在尝试连接MySQL数据库。 为此,我更改了app / config目录中的database.php文件。

该文件包含连接数据库所需的以下详细信息。

class DATABASE_CONFIG {

       public $default = array(
        'datasource' => 'Database/Mysql',
        'persistent' => false,
        'host' => 'localhost',
        'login' => 'root',
        'password' => '',
        'database' => 'db_world',
        'prefix' => ''
       );

}

对于root用户,我通过设置密码和使用空密码尝试了两种方法。

  • 尝试使用“root”用户以及创建具有所需权限的其他用户。
  • 尝试用127.0.0.1代替'localhost'
  • 检查数据库是否使用普通的PHP脚本连接。

测试数据库连接的普通php脚本如下: -

<?php

   $connect = mysql_connect("127.0.0.1","root","") or die("Could not connect");
   mysql_select_db("db_world") or die("Could not find db");

   echo "hello world";

?>

以上脚本有效,这意味着它不是MySQL方面的问题。

我仍然总是得到“Cake无法连接到数据库”。 目前我不确定我在这里缺少什么。

任何解决问题的方法都会有所帮助。

7 个答案:

答案 0 :(得分:22)

CakePHP 2.0使用的是PDO,而不是mysql_connect,我的猜测是没有安装PDO MySQL扩展。

您是否可以运行以下脚本来检查是否可以手动创建连接?

$hostname = "localhost";
$username = "root";
$password = "";

try {
  $db = new PDO("mysql:host=$hostname;dbname=db_world", $username, $password);
  echo "Connected to database";
}
catch(PDOException $e) {
  echo $e->getMessage();
}

答案 1 :(得分:1)

首先通过以下方式测试PDO Mysql扩展:

var_dump( extension_loaded('pdo_mysql') );

如果它是假的,对于Windows,只需将这些行添加到PHP.INI:

extension=php_pdo.dll   /* not necessary for PHP v5.3+ */
extension=php_pdo_mysql.dll

参考: http://www.php.net/manual/en/pdo.installation.php

答案 2 :(得分:1)

检查您提供的密码!我在PDO上搜索一个问题大约一个星期然后我发现我的密码不正确!!所以要注意这一点 - 错误也是一样的。

答案 3 :(得分:1)

我也面临这个问题。这花了我几个小时才弄明白。当我启动一个新的CakePHP 2.0应用程序时,我无法连接到MySQL数据库。

我终于想通了你必须在php.ini中启用php_pdo_extension。

以下链接可帮助我解决此问题

(http://www.cakephpexample.com/uncategorized/cakephp-missing-database-connection/)

答案 4 :(得分:0)

用于编码和错误消息:

try {
    $dns = 'mysql:host=localhost;dbname=db';
    $user = 'user';
    $psswrd = 'pass';
    // Options connection
    $options = array(
        PDO::MYSQL_ATTR_INIT_COMMAND    => "SET NAMES utf8",
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
    );
    $connection = new PDO( $dns, $user, $psswrd, $options );

} catch ( Exception $e ) {
    echo "Connection impossible to MySQL : ", $e->getMessage();
    die();
}
祝你好运

答案 5 :(得分:0)

在Windows上,你应该下载最新版本的WAMP,因为CakePHP 2.x使用PDO并且只支持mySQL 4.最新版本的Cake支持5.x和PHP 5.2.8或更高版本。如果需要,请不要忘记mod_rewrite

在Linux上,您应该使用apt-getaptitude

apt-get install apache2 mysql-server php5 ; apt-get install php5-mysql

然后重启/重新加载apache2

最后不要忘记chmod -R 777 cakephp / app / tmp缓存并填写对数据库的访问权限(app / Config / database.php)

答案 6 :(得分:0)

一些CakePHP项目(例如webzash)有自己的数据库配置,覆盖app/Config/Database.php个。例如,对于webzash,连接是在plugins/Webzash/Config/MasterConfig.php

中进行的