Bonjour,

Je suis la formation Mise en pratique de la POO en PHP.
J'ai un soucis avec phinx. Lorsque j'essaye d'utiliser phinx, il n'arrive pas à se connecter à la base de données.
Voici ce que me retourne ma console :

  [PDOException]                                                               
  SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using pas  
  sword: YES)                                                                  

Alors que le site arrive tout à fait à se connecter. Ce qui est fou c'est qu'ils ont les même informations pour se connecter à la base de données.
Voici le code dans mon config.php

return [
    'env' => 'dev',
    'database.host' => 'localhost',
    'database.username' => 'root',
    'database.password' => 'root',
    'database.name' => 'monsupersite',
    \PDO::class => function (\Psr\Container\ContainerInterface $c) {
        return $pdo = new PDO(
            'mysql:host=' . $c->get("database.host") . ';dbname=' . $c->get('database.name'),
            $c->get('database.username'),
            $c->get('database.password'),
            [
                PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            ]
        );
    },
 ];

Avez une idée pour résoudre ce problème ?

Merci !

8 réponses


Baw0u
Auteur
Réponse acceptée

Merci pour votre réponse.
Malheuresement je n'ai pas trouvé de solutions dans votre lien.
J'ai trouvé la solution à mon problème en ajoutant l'unix_socket.
Phinx fonctionnait donc très bien.

<?php
require 'web/index.php';

$migrations = [];
$seeds = [];
foreach ($app->getModules() as $module) {
    if ($module::MIGRATIONS) {
        $migrations[] = $module::MIGRATIONS;
    }
    if ($module::SEEDS) {
        $seeds[] = $module::SEEDS;
    }
}

return [
    'paths'        => [
        'migrations' => $migrations,
        'seeds'      => $seeds
    ],
    'environments' => [
        'default_database' => 'development',
        'development'      => [
            'adapter' => 'mysql',
            'host' => $app->getContainer()->get('database.host'),
            'name' => $app->getContainer()->get('database.name'),
            'user' => $app->getContainer()->get('database.username'),
            'pass' => $app->getContainer()->get('database.password'),
            'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
            'charset' => 'utf8',
        ]
    ]
];

Plutot il y a un probleme de mot e passe verifie ton mon de passe au serveur de base de donnee

Salut,
Peux tu nous montrer la partie connexion via phinx ?

connexion dans le pichier phinx php si vous etes pas habitué a travailler avec yml et en passant son prebleme seside du cote mysql

Baw0u
Auteur

Ce n'est pas un problème de mot de passe vu que le site se connecte bien à la BDD. Voici le contenu de phinx. J'ai bien testé, les valeurs sont corrects et sont bien chargés. Il n'arrive tout simplement pas à se connecter à ma BDD alors que le site oui (même valeurs de configuration).

Merci pour vos réponses.

<?php
require 'web/index.php';

$migrations = [];
$seeds = [];
foreach ($app->getModules() as $module) {
    if ($module::MIGRATIONS) {
        $migrations[] = $module::MIGRATIONS;
    }
    if ($module::SEEDS) {
        $seeds[] = $module::SEEDS;
    }
}

return [
    'paths'        => [
        'migrations' => $migrations,
        'seeds'      => $seeds
    ],
    'environments' => [
        'default_database' => 'development',
        'development'      => [
            'adapter' => 'mysql',
            'host' => $app->getContainer()->get('database.host'),
            'name' => $app->getContainer()->get('database.name'),
            'user' => $app->getContainer()->get('database.username'),
            'pass' => $app->getContainer()->get('database.password'),
            'charset' => 'utf8',
        ]
    ]
];

Donc il y a un probleme avec phinx danc ce cas la ! Un petit tour de lecture sur ce liens

Super ! et tu as procedé comment un petit partage fera l'affaire ça aiderai aussi !!!