2011-10-08 16 views
8

Korzystając z najnowszej wersji CakePHP 2.0 RC3, próbuję połączyć się z bazą danych MySQL. W tym celu zmieniłem plik database.php obecny w katalogu app/config.CakePHP 2 nie może połączyć się z bazą danych MySQL

Plik zawiera poniższe dane wymagane do połączenia z bazą danych.

Dla root'a próbowałem obu, ustawiając hasło, jak również używając pustego hasła.

  • Próbowano za pomocą użytkownika "root", jak również przez utworzenie innego użytkownika z wymaganymi uprawnieniami.
  • Próbowano podając 127.0.0.1 zamiast "localhost"
  • Sprawdzono, że baza danych została podłączona za pomocą normalnego skryptu php.

normalny skrypt php, aby przetestować połączenie z bazą danych jest tak: -

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

?> 

Powyższy skrypt działa, co oznacza, że ​​nie jest to problem od strony MySQL.

Nadal zawsze otrzymuję komunikat "Ciastko nie jest w stanie połączyć się z bazą danych". Obecnie nie jestem pewien, czego tu brakuje.

Pomocne będą wszelkie wskazówki, które pomogą rozwiązać problem.

+0

Czy możesz pokazać "normalny skrypt php", który faktycznie działał - prawdopodobnie używał innego sterownika mysql? – ddinchev

+0

Witam Veseliq, dodano skrypt PHP użyty w pytaniu. – Jay

Odpowiedz

22

CakePHP 2.0 używa PDO, a nie mysql_connect i domyślam się, że rozszerzenie MySQL PDO nie jest zainstalowane.

Czy można uruchomić poniższy skrypt, aby sprawdzić, czy można ręcznie utworzyć połączenie?

$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

Tak, problem został rozwiązany. Rozszerzenie MySQL PDO nie zostało włączone. Włączyłem go i zmieniłem localhost na 127.0.0.1, a następnie problem został rozwiązany. CakePHP jest teraz w stanie połączyć się z bazą danych. Wielkie dzięki!!! Twoje rozwiązanie było na miejscu !!! – Jay

+0

Yikes, Wciągnąłem włosy na tę. Dzięki! +1 –

+1

@dhofstet Otrzymuję "Połączony z bazą danych" kiedy to robię, ale na mojej nowej stronie instalacji cakephp zawsze pojawia się następujący błąd 'Nie można ustanowić połączenia z bazą danych: SQLSTATE [HY000] [1045] Odmowa dostępu dla użytkownika 'my_app' @ 'localhost' (używając hasła: TAK) ' Zmieniłem nazwę użytkownika i hasło w app.php, ale nie wyświetla się na tej stronie. o co nam chodzi? proszę o pomoc .. –

1

Pierwszy test dla rozszerzenia PDO MySQL poprzez:

var_dump(extension_loaded('pdo_mysql')); 

Jeśli jest fałszywy, dla Windows, po prostu dodaj te linie do swojego php.ini:

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

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

+0

Co jeśli to prawda? – Goose

1

Sprawdź podane hasło! Szukałem problemu w PDO około tygodnia, a następnie stwierdziłem, że moje hasło jest nieprawidłowe !! Więc zwróć na to uwagę - błąd będzie taki sam.

0

do kodowania i komunikatów o błędach:

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

Powodzenia

0

W systemie Windows należy pobrać najnowszą wersję WAMP ponieważ CakePHP 2.x korzysta PDO i obsługuje tylko wersji 4. najnowsza wersja Ciasto obsługuje 5.x i PHP 5.2.8 lub więcej. Nie zapomnij o mod_rewrite, jeśli chcesz.

W systemie Linux należy użyć apt-get lub aptitude:

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

następnie uruchom/reload apache2

Wreszcie nie zapomnij chmod -R 777 cakephp/app/tmp dla pamięci podręcznej i wypełnić pola dostępu do Twojego DB (APP /Config/database.php)

0

niektórych projektów CakePHP (takich jak webzash) posiadają własną konfigurację bazy danych, które mają pierwszeństwo jednego app/Config/Database.php. Na przykład w przypadku webzasha połączenie jest nawiązywane w plugins/Webzash/Config/MasterConfig.php.

Powiązane problemy