42 votes

Dépannage "Aucun fichier ou répertoire de ce type" lors de l'exécution de `php app/console doctrine:schema:create`

Je suis nouveau sur Symfony2 (beta4) et Doctrine et j'ai des problèmes lorsque j'essaie de créer le schéma de base de données via la ligne de commande.

Voici l'erreur :

 $ 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

Les paramètres de la base de données mysql sont correctement insérés dans le fichier config/parameters.ini.

Et voici la configuration de Doctrine dans 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

Et l'entité (j'en ai fait qu'une pour la tester)

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

167voto

EricSonaron Points 1595

Trop tard mais j'espère que ça pourra aider quelqu'un.

Aujourd'hui encore, je tombe dans une situation similaire (mais dans un autre contexte, j'essayais de créer des entités à partir de db).

Je l'ai résolu en modifiant simplement de database_host de "localhost" à "127.0.0.1" dans le fichier parameters.ini.

Je pense que mon instance Mysql s'exécute uniquement via TCP et non socket et parce que cela échoue lorsque vous utilisez database_host="localhost".

19voto

Saperlipopette Points 424

Essayez d'ajouter cette ligne

 unix_socket: /tmp/mysql.sock

dans votre fichier config.yml > doctrine > dbal juste après la ligne de mot de passe.

11voto

victormfv Points 111

J'ai changé 'host'=> 'localhost' en 'host'=> '127.0.0.1' sur app/config/database.php et tout fonctionne correctement

2voto

Justin Points 2493

Le problème pour moi était le mysql.default_socket dans PHP.INI par défaut à un emplacement différent de celui où MySQL met réellement ce fichier.

Au lieu d'éditer les fichiers de configuration, j'ai créé un alias à l'emplacement recherché par PHP qui se connecte au vrai mysql.sock.

Exécutez simplement ces deux commandes (aucun redémarrage nécessaire) :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X