使用最新的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用户,我通过设置密码和使用空密码尝试了两种方法。
测试数据库连接的普通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无法连接到数据库”。 目前我不确定我在这里缺少什么。
任何解决问题的方法都会有所帮助。
答案 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
答案 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-get
或aptitude
:
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
。