Hướng dẫn database connection mysql not configured - kết nối cơ sở dữ liệu mysql không được cấu hình

Bất cứ ai vấp phải điều này - nếu bạn đang sử dụng Laravel 5.4 hoặc mới hơn, bạn có thể thiết lập kết nối cơ sở dữ liệu mới trong config/database.php

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

Tôi đã tạo 3 biến

DB_DATABASE_TEST=test_db
DB_USERNAME_TEST=local
DB_PASSWORD_TEST=localpassword
0 mới
DB_DATABASE_TEST=test_db
DB_USERNAME_TEST=local
DB_PASSWORD_TEST=localpassword
1,
DB_DATABASE_TEST=test_db
DB_USERNAME_TEST=local
DB_PASSWORD_TEST=localpassword
2,
DB_DATABASE_TEST=test_db
DB_USERNAME_TEST=local
DB_PASSWORD_TEST=localpassword
3

Chỉnh sửa

DB_DATABASE_TEST=test_db
DB_USERNAME_TEST=local
DB_PASSWORD_TEST=localpassword
4 với một cái gì đó giống như

DB_DATABASE_TEST=test_db
DB_USERNAME_TEST=local
DB_PASSWORD_TEST=localpassword

Đảm bảo cấu hình được làm mới:

DB_DATABASE_TEST=test_db
DB_USERNAME_TEST=local
DB_PASSWORD_TEST=localpassword
5

Bạn sẽ có thể chạy cơ sở dữ liệu di chuyển trên cơ sở dữ liệu thử nghiệm mới của bạn, như vậy:

DB_DATABASE_TEST=test_db
DB_USERNAME_TEST=local
DB_PASSWORD_TEST=localpassword
6

Trong trường hợp của tôi, tôi đã tìm thấy một giải pháp cho chính xác sự cố, tôi sử dụng kết nối nhiều cơ sở dữ liệu mà không có sự kết nối "mysql" mặc định! Trong config/hàng đợi của tôi ở các dòng cuối cùng, tôi đã tìm thấy nội dung mặc định này:

'failed' => [
        'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'),
        'database' => env('DB_CONNECTION', 'mysql'), // <-- here is not configured named connection
        'table' => 'failed_jobs',
    ],

Lỗi đôi khi được hiển thị trong các công việc hàng loạt của tôi khi các công việc không thành công xuất hiện. Tôi chỉ sửa cấu hình này bằng tên kết nối cơ sở dữ liệu chính xác của mình.

Chỉ là một gợi ý, tìm kiếm thư mục kết nối bị thiếu trong /config và /app

Tôi đang cố gắng xếp hàng thông báo trong dự án Laravel của mình. Bất cứ khi nào một thông báo được xếp hàng, nó thành công tạo thành công trong bảng công việc với độ trễ được chỉ định. Tuy nhiên, khi công việc được thực thi, nó không thành công do lỗi này

DB_DATABASE_TEST=test_db
DB_USERNAME_TEST=local
DB_PASSWORD_TEST=localpassword
7. Tôi có thể lên lịch các công việc thường xuyên trong hàng đợi chạy đúng nhưng bất kỳ thông báo nào tôi cố gắng xếp hàng thất bại. Chúng hoạt động khi xếp hàng trong chế độ đồng bộ nếu điều đó quan trọng.

Một cái gì đó đang khiến các cấu hình cơ sở dữ liệu của tôi đặt lại về giá trị mặc định khiến thông báo của tôi bị lỗi.

Tôi cũng đã xóa bộ nhớ cache của mình và cấu hình

DB_DATABASE_TEST=test_db
DB_USERNAME_TEST=local
DB_PASSWORD_TEST=localpassword
8

Tôi có cơ sở dữ liệu được xác định trong

DB_DATABASE_TEST=test_db
DB_USERNAME_TEST=local
DB_PASSWORD_TEST=localpassword
9:

'default' => env('QUEUE_CONNECTION', 'database'),
'connections' => [

    'sync' => [
        'driver' => 'sync',
    ],

    'database' => [
        'driver' => 'database',
        'table' => 'jobs',
        'queue' => 'default',
        'retry_after' => 90,
    ],
    ...

và tôi có mysql được xác định trong config/database.php

'default' => env('DB_CONNECTION', 'mysql'),
'connections' => [
    'mysql' => [
            'driver' => 'mysql',
            'url' => '',
            'host' => env('DB_HOST', DB_HOST),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', DB_NAME),
            'username' => env('DB_USERNAME', DB_USER),
            'password' => env('DB_PASSWORD', DB_PASS),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => false,
            'engine' => 'InnoDB',
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],
        ],
        ...

Tôi có

'failed' => [
        'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'),
        'database' => env('DB_CONNECTION', 'mysql'), // <-- here is not configured named connection
        'table' => 'failed_jobs',
    ],
1 trong
'failed' => [
        'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'),
        'database' => env('DB_CONNECTION', 'mysql'), // <-- here is not configured named connection
        'table' => 'failed_jobs',
    ],
2 của mình cho thấy kết quả chính xác:

array:4 [
  "mysql" => array:15 [
    "driver" => "mysql"
    "url" => null
    "host" => "127.0.0.1"
    "port" => "3306"
    "database" => "****"
    "username" => "****"
    "password" => "****"
    "unix_socket" => ""
    "charset" => "utf8mb4"
    "collation" => "utf8mb4_unicode_ci"
    "prefix" => ""
    "prefix_indexes" => true
    "strict" => false
    "engine" => "InnoDB"
    "options" => []
  ],
  ...
]

Tôi đã thấy rằng khi công việc thông báo được thực thi, các kết nối cơ sở dữ liệu được xóa và thay thế bằng kết nối

'failed' => [
        'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'),
        'database' => env('DB_CONNECTION', 'mysql'), // <-- here is not configured named connection
        'table' => 'failed_jobs',
    ],
3 phù hợp với kết nối MySQL đã xác định của tôi.Tuy nhiên, Laravel đang tìm kiếm một cấu hình
'failed' => [
        'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'),
        'database' => env('DB_CONNECTION', 'mysql'), // <-- here is not configured named connection
        'table' => 'failed_jobs',
    ],
4 không phải là `mặc định` khiến công việc thất bại.

.Env Tệp:

DB_CONNECTION=mysql
DB_PORT=3306
DB_HOST=127.0.0.1
DB_DATABASE=****
DB_USERNAME=****
DB_PASSWORD=****

CACHE_DRIVER=file
#SESSION_DRIVER=database
SESSION_LIFETIME=120
QUEUE_CONNECTION=database

Đây là StackTrace cho lỗi công việc:

[2020-12-15 10:09:02] local.ERROR: Database connection [mysql] not configured. {"exception":"[object] (InvalidArgumentException(code: 0): Database connection [mysql] not configured. at /var/www/vhost1/master/laravel/vendor/laravel/framework/src/Illuminate/Database/DatabaseManager.php:152)
[stacktrace]
#0 /var/www/vhost1/master/laravel/vendor/laravel/framework/src/Illuminate/Database/DatabaseManager.php(115): Illuminate\\Database\\DatabaseManager->configuration()
#1 /var/www/vhost1/master/laravel/vendor/laravel/framework/src/Illuminate/Database/DatabaseManager.php(86): Illuminate\\Database\\DatabaseManager->makeConnection()
#2 /var/www/vhost1/master/laravel/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1257): Illuminate\\Database\\DatabaseManager->connection()
#3 /var/www/vhost1/master/laravel/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1223): Illuminate\\Database\\Eloquent\\Model::resolveConnection()
#4 /var/www/vhost1/master/laravel/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1052): Illuminate\\Database\\Eloquent\\Model->getConnection()
#5 /var/www/vhost1/master/laravel/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(969): Illuminate\\Database\\Eloquent\\Model->newBaseQueryBuilder()
#6 /var/www/vhost1/master/laravel/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1005): Illuminate\\Database\\Eloquent\\Model->newModelQuery()
#7 /var/www/vhost1/master/laravel/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1031): Illuminate\\Database\\Eloquent\\Model->newQueryWithoutScopes()
#8 /var/www/vhost1/master/vendor/illuminate/queue/SerializesAndRestoresModelIdentifiers.php(114): Illuminate\\Database\\Eloquent\\Model->newQueryForRestoration()

Đầu ra từ

'failed' => [
        'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'),
        'database' => env('DB_CONNECTION', 'mysql'), // <-- here is not configured named connection
        'table' => 'failed_jobs',
    ],
5 bên trong
'failed' => [
        'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'),
        'database' => env('DB_CONNECTION', 'mysql'), // <-- here is not configured named connection
        'table' => 'failed_jobs',
    ],
6 dòng
'failed' => [
        'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'),
        'database' => env('DB_CONNECTION', 'mysql'), // <-- here is not configured named connection
        'table' => 'failed_jobs',
    ],
7

[2020-12-16 09:19:26] local.INFO: array (
  'default' => 
  array (
    'driver' => 'mysql',
    'host' => '127.0.0.1',
    'database' => '****',
    'username' => '****',
    'password' => '****',
    'charset' => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix' => '',
  ),
)  
[2020-12-16 09:19:26] local.INFO: array (
  'default' => 
  array (
    'driver' => 'mysql',
    'host' => '127.0.0.1',
    'database' => '****',
    'username' => '****',
    'password' => '****',
    'charset' => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix' => '',
  ),
)