CakePHP Datenbankverbindung "Mysql" fehlt oder konnte nicht erstellt werden



Answers

Eine Alternative zu unix_socket (speziell für OS X-Leute) besteht darin, localhost durch 127.0.0.1 zu ersetzen

Wäre wie folgt:

public $default = array(
                'datasource' => 'Database/Mysql',
                'persistent' => false,
                'host' => '127.0.0.1',
                'login' => 'user',
                'password' => 'password',
                'database' => 'database-name',
                'prefix' => '',
                'encoding' => 'utf8',
        );
Question

Es gab mehrere andere Beiträge darüber, aber keine der Antworten schien für mich zu funktionieren.

Wenn ich auf meinem lokalen Computer zur CakePHP-Seite navigiere, gibt es einen Fehler:

Cake kann KEINE Verbindung zur Datenbank herstellen. Datenbankverbindung "Mysql" fehlt oder konnte nicht erstellt werden.

Wenn ich diesen hilfreichen Code in meinem home.ctp ausführe, erhalte ich die folgende Antwort:

Fehler !: SQLSTATE [42000] [1049] Unbekannte Datenbank "Test"

Meine Users/Ben/Sites/myapp/app/Config/database.php sieht jedoch folgendermaßen aus (Ich habe MAMP so eingestellt, dass er in Users / Ben / Sites nach dem Dokumentstamm sucht):

<?php
class DATABASE_CONFIG {

    public $default = array(
        'datasource' => 'Database/Mysql',
        'persistent' => false,
        'host' => 'localhost',
        'login' => 'Ben',
        'password' => 'mypass',
        'database' => 'CV',
    );
}

Ich habe einen mysql Benutzer namens Ben mit Passwort mypass erstellt und eine Datenbank mit dem Namen CV . Außerdem kann ich nirgendwo eine test finden. Hilfe?




Es ist dein Modell. Öffnen Sie das und es muss die folgende Zeile sein

public $useDbConfig = 'local';

Dies überschreibt die globale Konfiguration und setzt sie auf lokal zurück




Wenn Sie auf GoDaddy (oder einem anderen Shared Hosting für diese Angelegenheit) sind, können sie ausgehende Verbindungen nur auf die Ports 80 und 443 beschränken.




Auf dem Mac, der MAMP als Entwicklungsplattform verwendet, verwendet Cake für die richtige Lösung Domingo Casarrubio.

Fügen unix_socket Ihren Datenbankkonfigurationen den Parameter unix_socket .

'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',



Ich habe bemerkt, dass du das vor einem Jahr gefragt hast, und wahrscheinlich hättest du das schon gelöst. Wenn Sie jedoch versucht haben, CakePHP auf XAMPP zu installieren, müssen Sie lediglich den "Login" in "root" ändern, dh das Standard-Login von XAMPP, und das "Passwort" als "" belassen leer. Der vollständige Code in Ihrer Datenbank.php Datei sollte wie folgt aussehen:

public $default = array(
    'datasource' => 'Database/Mysql',
    'persistent' => false,
    'host' => 'localhost',
    'login' => 'root',
    'password' => '',
    'database' => 'ckblog',//replace with your own database name
    'prefix' => '',
    //'encoding' => 'utf8',
);

Das ist es.




In meinem Fall war es, weil die Datenbank nicht existierte. Ich erwartete, dass ./app/Console/cake schema create laufen würde, aber es nicht. Das Erstellen mit der create database <database name> in mysql hat den Trick gemacht (obwohl ich bereits Privilegien zugewiesen hatte).




Möglicherweise müssen Sie die Tabelle in Ihrer PHP-Datei erstellen ... Öffnen Sie phpMyAdmin und prüfen Sie, ob der Datenbank-CV vorhanden ist.




Ich habe das ganze Wochenende damit gekämpft und es endlich gelöst. Es stellt sich heraus, dass die php.ini auf ein nicht existierendes "extensions dir" zeigt. Erstellen Sie eine phpinfo () Datei und schauen Sie sich den Wert dieses Feldes an:

Mir ist aufgefallen, dass sich im Ordner mamp php installed ein Ordner no-debug-non-zts-20131226 befindet, der sich von dem in phpinfo () angegebenen Wert unterscheidet. Ich habe diesen Ordner geklont und den Namen in den Wert von phpinfo () geändert. Wahrscheinlich könnten Sie die php.ini Datei ändern, aber ich wollte nicht.

Ich weiß nicht, ob du dein Problem gelöst hast, aber ich poste das, weil mein Problem anders war und Google mich hierher gebracht hat, also hoffe ich, zukünftigen Googlern zu helfen, ein ähnliches Problem zu haben.

Hoffe das hilft.




Es kann sein, dass mysql PDO Unterstützung fehlt.

als root (oder mit sudo):

apt-get install php5-mysql



Links