webentwicklung-frage-antwort-db.com.de

Laravel PDOException SQLSTATE [HY000] [1049] Unbekannte Datenbank 'Schmiede'

Ich verwende Laravel, um eine Verbindung zur MySQL-Datenbank herzustellen.

Ich habe diese Ausnahme bekommen:

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

und das ist meine config.database.php

'mysql' => array(
            'driver'    => 'mysql',
            'Host'      => 'localhost',
            'database'  => 'laravel',
            'username'  => 'Anastasie',
            'password'  => '[email protected]',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),

warum bezieht sich der Fehler auf die PDO-Datenbank? und warum der forge-Datenbankname? Ich habe es schon geändert. 

Sollte ich Laravel etwas mitteilen, dass ich die MySQL-Datenbank verwende?

Update 1

Ich habe diese Zeile gefundenprotected $table = 'users';in meiner user.php-Datei und habe sie in protected $table = 'user'; geändert, da die Tabelle in meiner Datenbank user und nicht users lautet.

Update 2

Ich habe das in meine Route geschrieben

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

und ich habe UsersController.php in meinem Controller-Ordner hinzugefügt

und in UsersController.php habe ich folgendes:

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'));
    }

und ich nenne diese URL http://localhost:8082/laravel/public/users/

Ich verwende Windows 7 mit Laravel 4.2

Danke im Voraus

16

Sie müssen den Cache so löschen (weil sich Ihre alte Konfiguration in Ihrer Cache-Datei befindet):

php artisan cache:clear

Der pdo-Fehler rührt von der Tatsache her, dass Laravel den pdo-Treiber verwendet, um eine Verbindung zu mysql herzustellen

10
Freelancer
  1. Zuerst müssen Sie Ihre verwandte Datenbank erstellen.
  2. Dann: php artisan cache:clear 
  3. Jetzt php artisan migrate:install ausführen

Hoffen Sie, dass Ihr Problem gelöst wird.

6
user5320639

Mit phpMyAdmin (oder was auch immer Sie bevorzugen) habe ich gerade eine Datenbank mit dem Namen "forge" erstellt und den php artisan migrate-Befehl erneut ausgeführt, und alles funktionierte.

3
Joey Garcia

Klingt nach einer umgebungsspezifischen Konfigurationsdatei, die die Standardeinstellungen der Datenbank überschreibt. Möglicherweise app/config/local/database.php .

3
Martin Bean

Hinweis: Sobald ich zufällig vor meinem Datenbanknamen ein Leerzeichen hatte, z. B. mydatabase anstelle von mydatabase, zeigt phpmyadmin das Leerzeichen nicht an. Wenn Sie es jedoch über die Befehlszeilenschnittstelle von mysql ausführen, z. B. mysql -u the_user -p, dann show databases werde den Raum sehen können.

2
dud3

Ich hatte das gleiche Problem ... Wenn Sie Ihren DB-Namen und -Nutzernamen eingegeben haben und die .env-Datei korrekt übergeben haben und diese immer noch nicht funktioniert, führen Sie den Blow-Code im Terminal aus:

php artisan cache:clear

und dann den Befehl php artisan serve erneut (wenn Sie es ausführen, beenden Sie es und führen Sie es erneut aus)

manchmal liegt es daran, dass DB_CONNECTION = mysql ist und Sie die sqlite-Datenbank verwenden möchten Die Lösung dafür ist, DB_CONNECTION = sqlite zu machen. ich hoffe es hilft

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, Lösung gefunden. 

In der Datei database.php ist standardmäßig der Teil "mysql" enthalten:

 '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,
        ],

sie müssen nur die Werte ändern:

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

durch Ihren Datenbanknamen (Sie müssen einen erstellen, wenn Sie keinen haben) und durch diesen Datenbankbenutzernamen

so was

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

Stellen Sie sicher, dass sich im Laravel-Ordner keine duplizierte .evn-Datei befindet. Wenn es existiert, löschen Sie es. Behalten Sie nur die .evn-Datei. 

0
Farhad

Ich habe dieses Problem schon einige Male gesehen, ich stelle fest, dass ich Laravel über Vagrant laufe. Hier sind die Korrekturen, die für mich funktionieren:

  • Mehrmals versuchen (Seite aktualisieren)
  • Reload Vagrant (Vagrant Reload)

Sie können versuchen, Ihren Server anstelle von Vagrant (dh MAMP) neu zu laden.

0
michaeltintiuc