web-dev-qa-db-fra.com

Laravel PDOException SQLSTATE [HY000] [1049] Base de données inconnue 'forge'

J'utilise Laravel pour me connecter à la base de données MySQL.

J'ai cette exception:

PDOException
SQLSTATE[HY000] [1049] Unknown database 'forge'

et ceci est mon config.database.php

'mysql' => array(
            'driver'    => 'mysql',
            'Host'      => 'localhost',
            'database'  => 'laravel',
            'username'  => 'Anastasie',
            'password'  => 'A@Laurent',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),

pourquoi l'erreur concerne-t-elle la base de données PDO? et pourquoi le nom de la base de données forge? Je l'ai déjà changé. 

Devrais-je faire quelque chose pour dire à Laravel que j'utilise une base de données MySQL?

Mise à jour 1

J'ai trouvé cette ligneprotected $table = 'users';dans mon fichier user.php et je l'ai changé en protected $table = 'user'; car la table dans ma base de données est user pas users

Mise à jour 2

Je l'ai écrit dans ma route

Route::resource('users', 'UsersController');

et j'ai ajouté UsersController.php dans mon dossier contrôleurs

et à l'intérieur UsersController.php j'ai ceci:

class UsersController extends BaseController {

    /**
     * Display a listing of the resource.
     *
     * @return Response
     */
    public function index()
    {
        $users = User::all();
        return View::make('users.index', compact('users'));
    }

et j'appelle cette URL http://localhost:8082/laravel/public/users/

J'utilise Windows 7 avec Laravel 4.2

Merci d'avance

16

Vous devez vider le cache de cette manière (car votre ancienne configuration est dans votre fichier de cache):

php artisan cache:clear

L’erreur pdo vient du fait que Laravel utilise le pilote pdo pour se connecter à mysql

10
Freelancer
  1. Vous devez d’abord créer votre base de données associée.
  2. Alors: php artisan cache:clear 
  3. Maintenant, lancez php artisan migrate:install

J'espère que votre problème sera résolu.

6
user5320639

En utilisant phpMyAdmin (ou ce que vous préférez), je viens de créer une base de données appelée "forge" et de relancer la commande php artisan migrate.

3
Joey Garcia

On dirait que vous avez quelque part un fichier de configuration spécifique à l'environnement qui remplace les paramètres de base de données par défaut. Peut-être app/config/local/database.php .

3
Martin Bean

Remarque: une fois que j’ai eu accidentellement un espace avant le nom de ma base de données, tel que mydatabase au lieu de mydatabase, phpmyadmin n’affiche pas cet espace, mais si vous l’exécutez à partir de l’interface de ligne de commande de mysql, telle que mysql -u the_user -p puis show databases Serez capable de voir l'espace.

2
dud3

parfois, c'est parce que DB_CONNECTION = mysql et que vous voulez utiliser la base de données sqlite . La solution à cela est de faire DB_CONNECTION = sqlite. J'espère que ça aide

DB_CONNECTION=mysql
DB_Host=127.0.0.1
DB_PORT=3306
DB_DATABASE=C:\xampp\htdocs\jbtibl\database\database.sqlite
DB_USERNAME=root
DB_PASSWORD=
0
Izaz Khan

OK, solution trouvée. 

Dans le fichier database.php, par défaut, il contient la partie "mysql":

 'mysql' => [
            'driver' => 'mysql',
            'Host' => env('DB_Host', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
        ],

tout ce que vous devez faire est de changer les valeurs:

'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),

par votre nom de base de données (vous devez en créer un si vous n'en avez pas) et par ce nom d'utilisateur

comme ça

'database' => env('DB_DATABASE', 'MyDatabase'),
'username' => env('DB_USERNAME', 'MyUsername'),
0
Mistura

Assurez-vous de ne pas avoir un fichier .evn en double dans le dossier laravel. S'il existe, supprimez-le. Ne conservez que le fichier .evn. 

0
Farhad

A plusieurs reprises rencontré ce problème, notez que je suis en cours d'exécution laravel via Vagrant. Alors voici les correctifs qui fonctionnent pour moi:

  • Réessayez plusieurs fois (actualiser la page)
  • Reload vagrant (rechargement de vagabond)

Vous pouvez essayer de recharger votre serveur au lieu de vagabond (par exemple, MAMP)

0
michaeltintiuc