it-swarm.com.de

Fehlerbehebung "Keine solche Datei oder Verzeichnis" beim Ausführen von "php app/console doctrine: schema: create"

Ich bin neu bei Symfony2 (beta4) und Doctrine und habe Probleme, wenn ich versuche, das DB-Schema über die Befehlszeile zu erstellen.

Hier ist der Fehler:

$ php app/console doctrine:schema:create

Creating database schema...

[PDOException]                                    
SQLSTATE[HY000] [2002] No such file or directory  

[ErrorException]                                                                                          
Warning: PDO::__construct(): [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock) 
in /Applications/MAMP/htdocs/sf-test-2/vendor/doctrine-dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php line 36

Die Einstellungen der MySQL-Datenbank werden korrekt in die Datei config/parameters.ini eingefügt.

Und hier ist die Doctrine-Konfiguration in config.yml

# Doctrine Configuration
doctrine:
    dbal:
        driver:   %database_driver%
        Host:     %database_Host%
        dbname:   %database_name%
        user:     %database_user%
        password: %database_password%

    orm:
        auto_generate_proxy_classes: %kernel.debug%
        auto_mapping: true

Und die Entität (ich habe nur einen gemacht, um es zu testen)

<?php
// src/Acme/NewsBundle/Entity/Article.php
namespace Acme\NewsBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="articles")
 */
class Article
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
protected $id;

/**
 * @ORM\Column(type="string", length="255")
 */
protected $title;

/**
 * @ORM\Column(type="text")
 */
protected $body;

/**
 * @ORM\Column(type="string", length="255")
 */
protected $author;

/**
 * @ORM\Column(type="date")
 */
protected $date;
}
?>
36
LBridge

Ich habe es mit diesem kleinen Tutorial behoben: http://andreys.info/blog/2007-11-07/configuring-terminal-to-work-with-mamp-mysql-on-leopard

[EDIT]: Ich habe die richtige php.ini geändert und alles funktioniert jetzt einwandfrei.

Nun bekomme ich folgende Fehlermeldung:

[Exception]                                                                                            
 DateTime::__construct(): It is not safe to rely on the system's timezone settings.
 You are *required* to use the date.timezone setting or the date_default_timezone_set() function.
 In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier.
 We selected 'Europe/Berlin' for 'CEST/2.0/DST' instead 

Hier ist die date.timezone config in php.ini

date.timezone = "Europe/Paris"

Ich versuche es selbst herauszufinden, aber wenn einer von Ihnen weiß, wie er es beheben soll, zögern Sie nicht, dies zu kommentieren. Vielen Dank!

5
LBridge

Zu spät, aber ich hoffe es kann jemandem helfen.

Gerade heute bin ich in eine ähnliche Situation geraten (aber in einem anderen Kontext habe ich versucht, Entitäten aus db zu erstellen).

Ich habe es gelöst, indem ich de database_Host in der Datei parameters.ini von "localhost" in "127.0.0.1" geändert habe.

Ich glaube, meine MySQL-Instanz läuft nur über TCP und nicht über Socket und da dies bei Verwendung von database_Host = "localhost" fehlschlägt.

152
EricSonaron

Versuchen Sie, diese Zeile hinzuzufügen 

unix_socket: /tmp/mysql.sock

in Ihre config.yml-Datei> doctrine> dbal gleich nach der Passwortzeile.

19
Saperlipopette

Ich habe 'host' => 'localhost' in 'app'/config/database.php in 'host' => '127.0.0.1' geändert und alles funktioniert einwandfrei

11
victormfv

Das Problem für mich war, dass die Einstellung mysql.default_socket in PHP.INI standardmäßig an einem anderen Ort als dem liegt, an dem MySQL diese Datei tatsächlich ablegt.

Anstatt die Konfigurationsdateien zu bearbeiten, habe ich an dem Ort, den PHP sucht, einen Alias ​​erstellt, der eine Verbindung zur echten mysql.sock herstellt.

Führen Sie einfach diese beiden Befehle aus (kein Neustart erforderlich):

mkdir /var/mysql
ln -s /tmp/mysql.sock /var/mysql/mysql.sock
2
Justin

Laravel. Env add DB_SOCKET with path to mysql.sock

DB_CONNECTION=mysql
DB_Host=localhost
DB_PORT=3306
DB_DATABASE=database
DB_USERNAME=root
DB_PASSWORD=mypassword

DB_SOCKET=/Users/username/Library/Containers/MAMP/mysql/tmp/mysql.sock

oder fügen Sie unix_socket in PDO hinzu

PDO('mysql:Host=localhost;port=3306;unix_socket=/Users/username/Library/Containers/MAMP/mysql/tmp/mysql.sock', root, mypassword);
0

Es lohnt sich zu überprüfen, ob MySQL auch läuft.

0
Isaac

Ich denke, ich starte das mysql einfach neu, und Apache, das ist Arbeit für mich.

0
Reyno D'Wolfer

Manchmal erhalten Sie mehrere Lösungen für den Standortpfad von mysql.lock. Aber ich denke, die beste Lösung ist, den Standortpfad von mysql mit der Funktion phpinfo() zu sehen.

Hinweis: Wenn Sie phpinfo() nicht kennen, erstellen Sie einfach eine Datei, geben Sie einen beliebigen Namen an und fügen Sie den Inhalt dieser Datei wie folgt hinzu

<?php
phpinfo();
?>

führen Sie diese Datei aus und rufen Sie den Pfad der Datei mysql.lock auf. Ich denke es wird helfen. 

0
Mehedi Hasan

Zu spät, hoffe aber, dass es auch jemandem helfen kann.

Ich verwende Vagrant

Ändern Sie einfach localhost in 127.0.0.1 und ändern Sie den Port in 3333.

hat perfekt funktioniert.

0
Fabio Valencio

Hatte das gleiche Problem "SQLSTATE [HY000] [2002] Keine solche Datei oder Verzeichnis" auf Symfony 3.2.9 bei der Bereitstellung

Ich habe es behoben, indem ich den Wert von database_Host von "localhost" in meine Server-IP in meiner parameters.yml-Datei geändert habe

ich hatte jedoch eine andere Fehlermeldung, als ich versuchte, die Befehlszeile über SSH auszuführen:

[Doctrine\DBAL\Exception\ConnectionException] Im Treiber ist eine Ausnahme aufgetreten: SQLSTATE [HY000] [2002] Verbindung abgelehnt

Ich beende das Problem, indem ich diese beiden Zeilen in meine config.yml-Datei im Doctrine-Konfigurationsabschnitt einfügte:

unix_socket: /var/lib/mysql/mysql.sock
server_version: '5.5'

meine letzte Lehrkonfiguration ist wie folgt: 

doctrine:
    dbal:
        driver: pdo_mysql
        Host: '%database_Host%'
        port: '%database_port%'
        dbname: '%database_name%'
        user: '%database_user%'
        password: '%database_password%'
        unix_socket: /var/lib/mysql/mysql.sock
        server_version: '5.5'
        charset: UTF8

hoffentlich hilft das

0
aina

Der Neustart von mysql hat für mich funktioniert:

Sudo /etc/init.d/mysql restart

0
Geoffrey Hale