2011-10-08 66 views
8

使用最新的CakePHP 2.0 RC3,我試圖連接到MySQL數據庫。 爲此,我更改了app/config目錄中的database.php文件。CakePHP 2無法連接到MySQL數據庫

該文件包含連接到數據庫所需的以下詳細信息。

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方面的問題。

我仍然總是得到「蛋糕不能連接到數據庫」。 目前我不知道我在這裏失蹤。

任何解決問題的指針都會有幫助。

+0

您可以顯示「正常的PHP腳本」實際工作 - 它可能使用不同的MySQL驅動程序? – ddinchev

+0

嗨Veseliq,添加了問題中使用的PHP腳本問。 – Jay

回答

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

是的,現在問題已解決。 PDO MySQL擴展未啓用。我啓用它並將localhost更改爲127.0.0.1,然後問題得到解決。 CakePHP現在可以連接到數據庫。非常感謝!!!您的解決方案已被發現! – Jay

+0

哎呀,我在這個上拉我的頭髮。謝謝! +1 –

+1

@dhofstet我碰到一個「連接到數據庫」當我這樣做,但在我的新CakePHP安裝頁面,我總是碰到下面的錯誤不能建立 '連接到數據庫:SQLSTATE [HY000] [1045]訪問被拒絕對於用戶程序my_app'@「localhost」的(使用密碼:YES)' 我app.php改變了用戶名和密碼,但它並不在此頁面顯示。我們的問題是什麼?請幫忙.. –

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

+0

如果是真的呢? – Goose

1

檢查您給的密碼!我在一個星期左右在PDO上搜索問題,然後我發現我的密碼不正確!所以請注意這一點 - 錯誤將是相同的。

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(); 
} 

好運

0

在Windows,因爲CakePHP的2.x使用PDO,只支持MySQL 4的最新版本,你應該下載最新版本的WAMP Cake支持5.x和PHP 5.2.8或更高版本。如果您需要,請不要忘記mod_rewrite

在Linux上,你應該使用apt-get或​​:

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

然後重新啓動/重新加載Apache2的

最後不要忘了chmod -R 777 cakephp/app/tmp緩存和訪問到你的數據庫中的字段填寫(應用程序/Config/database.php)

0

一些CakePHP的項目(如webzash)有自己的數據庫配置了覆蓋app/Config/Database.php之一。例如,在webzash的情況下,連接在plugins/Webzash/Config/MasterConfig.php中進行。