[英]CakePHP 2 is not able to connect to MySQL database
使用最新的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無法連接到數據庫”。 目前我不確定我在這里缺少什么。
任何解決問題的指針都會有所幫助。
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();
}
檢查您提供的密碼! 我在PDO上搜索一個問題大約一個星期然后我發現我的密碼不正確!! 所以要注意這一點 - 錯誤也是一樣的。
我也面臨這個問題。 這花了我幾個小時才弄明白。 當我啟動一個新的CakePHP 2.0應用程序時,我無法連接到MySQL數據庫。
我終於想通了你必須在php.ini中啟用php_pdo_extension。
以下鏈接可以幫助我解決這個問題
(http://www.cakephpexample.com/uncategorized/cakephp-missing-database-connection/)
通過以下方式首次測試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
用於編碼和錯誤消息:
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();
}
祝好運
在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
for cache並填寫訪問你的數據庫的領域(app / Config / database.php)
一些CakePHP項目(例如webzash)有自己的數據庫配置,可以覆蓋app/Config/Database.php
。 例如,在webzash的情況下,連接是在plugins/Webzash/Config/MasterConfig.php
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.