wake-up-neo.net

Datenbank [] nicht konfiguriert Laravel 5

Ich erstelle neue Datenbank in phpmyadmin und neue Tabellen.

Dann mach ich

    public function next(Request $request){
    $langs = DB::connection('mydb')->select('select * from lang');
    }

und bekomme

Database [compgen] not configured.

in meinem .env

DB_Host=localhost
DB_DATABASE=test
DB_USERNAME=root
DB_PASSWORD=123

in meiner config/database.php

        'mysql' => [
        'driver'    => 'mysql',
        'Host'      => env('DB_Host', 'localhost'),
        'database'  => env('DB_DATABASE', 'test'),
        'username'  => env('DB_USERNAME', 'root'),
        'password'  => env('DB_PASSWORD', '123'),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => 'test_',
        'strict'    => false,
    ],
5
Viktor

Sie verwenden eine Einzelverbindung, daher müssen Sie sie nicht angeben:

$langs = DB::table('lang')->get();

Sie sollten die Methode connection() nur verwenden, wenn Sie mit mehreren DB-Verbindungen arbeiten.

4
Alexey Mezenin

In meinem Fall habe ich 2 db-Verbindungen verwendet und die zweite wurde nicht zwischengespeichert. Der Befehlsaufruf: php artisan config:cache Hat den Trick ausgeführt.

Um zu sehen, was los ist, war es ausreichend, die Variable $connections in der Methode DatabaseManager->configure auszugeben.

3
Arthur Kushman

Jeder, der darüber stolpert - wenn Sie Laravel 5.4 oder neuer verwenden, können Sie in config/database.php eine neue Datenbankverbindung einrichten.

    'mysql_test' => [
        'driver'      => 'mysql',
        'Host'        => env('DB_Host', '127.0.0.1'),
        'port'        => env('DB_PORT', '3306'),
        'database'    => env('DB_DATABASE_TEST', 'forge'),
        'username'    => env('DB_USERNAME_TEST', 'forge'),
        'password'    => env('DB_PASSWORD_TEST', ''),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset'     => 'utf8mb4',
        'collation'   => 'utf8mb4_unicode_ci',
        'prefix'      => '',
        'strict'      => false,
        'modes'       => [
            'ONLY_FULL_GROUP_BY',
            'STRICT_TRANS_TABLES',
            'NO_ZERO_IN_DATE',
            'NO_ZERO_DATE',
            'ERROR_FOR_DIVISION_BY_ZERO',
            'NO_AUTO_CREATE_USER',
            'NO_ENGINE_SUBSTITUTION',
        ],
        'engine' => null,
    ],

Ich habe 3 neue env-Variablen erstellt DB_USERNAME_TEST, DB_PASSWORD_TEST, DB_DATABASE_TEST

Bearbeiten Sie .env mit etwas

DB_DATABASE_TEST=test_db
DB_USERNAME_TEST=local
DB_PASSWORD_TEST=localpassword

Stellen Sie sicher, dass die Konfiguration aktualisiert wird: php artisan config:cache

Sie sollten in der Lage sein, eine Datenbankmigration für Ihre neue Testdatenbank auszuführen, z.

php artisan migrate:refresh --database=mysql_test

1
jsonUK

In meinem Fall war es ein falscher Datenbank-Benutzername. Ich hatte es in meiner config/database.php sowie in der .env-Datei festgelegt, und eine davon unterschied sich von der anderen. Fand diesen Thread bei der Suche, dachte, dies könnte jemandem helfen.

1
Andrew Fox