2011-10-08 29 views
8

Utilizando el último CakePHP 2.0 RC3, estoy tratando de conectarme a la base de datos MySQL. Para esto, cambié el archivo database.php presente en el directorio app/config.CakePHP 2 no se puede conectar a la base de datos MySQL

El archivo contiene los siguientes detalles necesarios para conectarse a la base de datos.

class DATABASE_CONFIG { 

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

} 

Para root, intenté tanto estableciendo la contraseña como usando una contraseña en blanco.

  • Se ha intentado utilizar el usuario 'raíz' y crear otro usuario con los privilegios necesarios.
  • Intentó dar 127.0.0.1 en lugar de 'localhost'
  • Comprobó que la base de datos se conectaba mediante el script php normal.

El script php normales para probar la conectividad de base de datos es como: -

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

?> 

El script anterior funciona lo que significa que no es un problema de un lado MySQL.

Todavía siempre aparece "Cake no se puede conectar a la base de datos". Actualmente no estoy seguro de lo que me falta aquí.

Cualquier sugerencia para solucionar el problema será útil.

+0

¿Puedes mostrar el "script php normal" que realmente funcionó, probablemente haya usado un controlador mysql diferente? – ddinchev

+0

Hola Veseliq, agregué el script PHP usado en la pregunta. – Jay

Respuesta

22

CakePHP 2.0 usa PDO, no mysql_connect, y mi suposición es que la extensión de MySQL de PDO no está instalada.

¿Puede ejecutar la siguiente secuencia de comandos para comprobar si puede crear una conexión manualmente?

$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í, el problema ya está resuelto. La extensión PDO MySQL no estaba habilitada. Lo habilité y cambié localhost a 127.0.0.1 luego el problema se resolvió. CakePHP ahora puede conectarse a la base de datos. ¡¡¡Muchas gracias!!! ¡Su solución ha sido perfecta! – Jay

+0

Yikes, estaba tirando de mi cabello en este caso. ¡Gracias! +1 –

+1

@dhofstet Obtengo "Conectado a la base de datos" cuando hago esto, pero en mi nueva página de instalación cakephp, siempre obtengo el siguiente error 'No se pudo establecer la conexión a la base de datos: SQLSTATE [HY000] [1045] Acceso denegado para el usuario 'my_app' @ 'localhost' (usando la contraseña: YES) ' Cambié el usuario y la contraseña en app.php pero no se muestra en esta página. ¿cuál es el problema? por favor ayuda ... –

1

primera prueba para la extensión PDO MySQL a través de:

var_dump(extension_loaded('pdo_mysql')); 

Si es falsa, para Windows, sólo tiene que añadir estas líneas a su PHP.INI:

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

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

+0

¿Qué pasa si es verdad? – Goose

1

¡Compruebe la contraseña que le dio! Estaba buscando un problema en la PDO alrededor de una semana y luego descubrí que mi contraseña es incorrecta. Así que preste atención a eso también: el error será el mismo.

0

para codificar y mensajes de error:

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

Buena suerte

0

En Windows debe descargar la última versión de WAMP porque CakePHP 2.x utiliza PDO y sólo es compatible con MySQL 4. La última versión de Cake admite 5.x y PHP 5.2.8 o superior. No olvide mod_rewrite si lo desea.

En Linux se debe utilizar apt-get o aptitude:

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

continuación, reinicie/recarga apache2

Finalmente no se olvide de chmod -R 777 cakephp/app/tmp de caché y rellene los campos de acceso a su base de datos (APP /Config/database.php)

0

Algunos proyectos de CakePHP (como webzash) tienen su propia configuración de la base de que anula la app/Config/Database.php uno. Por ejemplo, en el caso de webzash, la conexión se realiza en plugins/Webzash/Config/MasterConfig.php.

Cuestiones relacionadas