2011-10-08 24 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'ユーザーと、必要な権限を持つ別のユーザーを作成して試しました。
  • 'localhost'の代わりに127.0.0.1を試してください
  • 通常の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は、mysql_connectではなくPDOを使用しています.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

Yikes、私はこの髪の毛を引っ張っていた。ありがとう! +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の問題を1週間ほど捜していましたが、パスワードが間違っていることが判明しました!!だからそれにも注意してください - エラーは同じになります。エンコードとエラーメッセージについて

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を使用しているためWAMPの最新バージョンをダウンロードして、唯一のMySQL 4の最新バージョンをサポートしていなければなりませんCakeは5.xとPHP 5.2.8以上をサポートしています。あなたがそれを望むならばmod_rewriteを忘れないでください。

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

再起動/リロードapache2の

が最後にキャッシュのためchmod -R 777 cakephp/app/tmpに忘れて、あなたのDB(アプリへのアクセスのフィールドに記入しないでください:あなたはapt-getや​​を使用する必要がありますLinuxの

/Config/database.php)

1

この問題も発生します。これは私を理解する時間がかかりました。新しいCakePHP 2.0アプリケーションを起動したとき、私はMySQLデータベースに接続できませんでした。

最後に、php.iniでphp_pdo_extensionを有効にする必要があることがわかりました。

次のリンクは、(このようなwebzashなど)いくつかのCakePHPのプロジェクトはapp/Config/Database.php 1をオーバーライドし、独自のデータベース構成を持ってこの問題

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

0

を解決するために私を助けて。例えば、webzashの場合、接続はplugins/Webzash/Config/MasterConfig.phpで行われます。

関連する問題