Bonjour,

J'ai une virtualisation avec docker (php, apache,mysql).
Je souhaite faire la commande suivante dans le dossier de travail (racine projet et dans ma virtualisation) :

php artisan migrate

Mais j'ai l'erreur suivante :

[PDOException]                                                                                               
  SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

Ma conf dans le fichier database.php :

        'mysql' => [
            'driver'    => 'mysql',
            'host'      => env('DB_HOST', 'db'),
            'database'  => env('DB_DATABASE', 'data'),
            'username'  => env('DB_USERNAME', 'root'),
            'password'  => env('DB_PASSWORD', 'root'),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => false,
        ],

Du coup je me suis dit peut être c'est un autre problème et j'ai donc créé une connexion manuel de la façon suivante :


$conn = mysqli_connect('db', 'root', 'root');
$db   = mysqli_select_db($conn, 'data');

var_dump($db);

le var_dump me retourne true. Donc j'en déduit que la connexion se fait bien.

De plus en faisant un ping de 'db', j'ai bien un retour.

Du coup je n'ia plus d'idée afin de pouvoir executer ma migration. :(

Pouvez-vous m'aider ?

Merci d'avance.

4 réponses


connected
Réponse acceptée

Bonjour,

est-ce que tu as un .env à la racine de ton projet ? Normalement, oui et c'est dedans que tu dois mettre tes données de connexion.

Bon courage :)

nickleus
Auteur

Pour complément d'information, mon adminer.php arrive bien à se connecter à mysql.

D'ailleurs '/var/run/mysqld/mysqld.sock' n'existe pas quand je me connecte :(

nickleus
Auteur

Roooo c'était vraiment trop simple :)

Mais du coup le fichier database.php il sert a quoi ?

Cette ligne de code, utilise la fonction env()

env('DB_PASSWORD', 'root'),

Elle permet de chercher la variable d'environnement (dans le .env) DB_PASSWORD ainsi que sa valeur. Si elle n’existe pas, utilise alors "root" comme valeur. Etant donné que par défaut il y a déjà des variable DB_PASSWORD dans ton .env, cela te retournait toujours une erreur car ils étaient mal configurés.
Donc le fichier database permet d'initialiser ta connexion avec le modules de ton choix (mysql ici).