2011-10-08 16 views
8

Utilizzando l'ultimo CakePHP 2.0 RC3, sto cercando di connettermi al database MySQL. Per questo, ho cambiato il file database.php presente nella directory app/config.CakePHP 2 non è in grado di connettersi al database MySQL

Il file contiene i seguenti dettagli necessari per la connessione al database.

class DATABASE_CONFIG { 

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

} 

Per root, ho provato sia impostando la password che utilizzando una password vuota.

  • Provato usando l'utente 'root' e creando un altro utente con i privilegi richiesti.
  • provato dando 127.0.0.1 al posto di 'localhost'
  • controllato che il database è stato sempre collegato con una normale script php.

Lo script php normale per verificare la connettività di database è come: -

<?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"; 

?> 

Lo script precedente funziona il che significa che non è un problema da parte di MySQL.

Ancora ottengo sempre "La torta non è in grado di connettersi al database". Attualmente non sono sicuro di cosa mi manchi qui.

Qualsiasi suggerimento per risolvere il problema sarà utile.

+0

Puoi mostrare il "normale script php" che ha funzionato veramente - probabilmente ha usato un driver mysql diverso? – ddinchev

+0

Ciao Veseliq, aggiunto lo script PHP usato nella domanda posta. – Jay

risposta

22

CakePHP 2.0 utilizza PDO, non mysql_connect e suppongo che l'estensione PDO MySQL non sia installata.

È possibile eseguire il seguente script per verificare se è possibile creare manualmente una connessione?

$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

Sì, il problema è stato risolto. L'estensione PDO MySQL non era abilitata. L'ho abilitato e cambiato localhost in 127.0.0.1 quindi il problema è stato risolto. CakePHP è ora in grado di connettersi al database. Molte grazie!!! La tua soluzione è stata perfetta !!! – Jay

+0

Yikes, stavo tirando i miei capelli su questo. Grazie! +1 –

+1

@dhofstet Ottengo "Connesso al database" quando faccio questo, ma nella mia nuova pagina di installazione di cakephp, ottengo sempre il seguente errore 'Impossibile stabilire la connessione al database: SQLSTATE [HY000] [1045] Accesso negato per utente 'my_app' @ 'localhost' (usando la password: YES) ' Ho cambiato l'utente e la password in app.php ma non compare in questa pagina. qual è il problema? per favore aiuto .. –

1

Primo test per l'estensione PDO Mysql via:

var_dump(extension_loaded('pdo_mysql')); 

Se è falsa, per Windows, è sufficiente aggiungere queste righe al file php.ini:

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

Riferimento: http://www.php.net/manual/en/pdo.installation.php

+0

E se fosse vero? – Goose

1

Controlla la password che hai dato! Stavo cercando un problema al PDO circa una settimana, poi ho appena scoperto che la mia password non è corretta !! Quindi fai attenzione anche a questo - l'errore sarà lo stesso.

0

per la codifica e messaggi di errore:

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

Buona fortuna

0

Su Windows è necessario scaricare l'ultima versione di WAMP perché CakePHP 2.x utilizza DOP e supporta solo mySQL 4. L'ultima versione di Cake supporta 5.xe PHP 5.2.8 o successivo. Non dimenticare mod_rewrite se lo vuoi.

Su Linux si dovrebbe usare apt-get o aptitude:

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

quindi riavviare/reload apache2

Infine non dimenticate di chmod -R 777 cakephp/app/tmp per la cache e compilare i campi di accesso al vostro DB (app /Config/database.php)

0

Alcuni progetti CakePHP (come ad esempio webzash) hanno la propria configurazione del database che l'override del app/Config/Database.php uno. Ad esempio, nel caso di webzash, la connessione viene effettuata in plugins/Webzash/Config/MasterConfig.php.

Problemi correlati