简体   繁体   中英

Migration errors in laravel

I am trying to migrate a table to a database called kokodb in laravel. However, I keep getting this error :

SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client (SQL: select * from information_schema.tables where table_schema = kokodb and table_name = migrations)

This is my env file:

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=kokodb
DB_USERNAME=*****
DB_PASSWORD=*****

and this is the database.php code:

    'mysql' => [
        'driver' => 'mysql',
        'host' => env('DB_HOST', 'localhost'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'kokodb'),
        'username' => env('DB_USERNAME', 'root'),
        'password' => env('DB_PASSWORD', 'ZAQ!2wsx'),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'strict' => true,
        'engine' => null,

What is the possible solution to this error?

For me, actually running artisan commands inside the workspace container solved the same problem I had. Check out the Laravel run artisan commands.

And adding following code at the end of config/database.php, afert 'engine':

        'modes'  => [
            'ONLY_FULL_GROUP_BY',
            'STRICT_TRANS_TABLES',
            'NO_ZERO_IN_DATE',
            'NO_ZERO_DATE',
            'ERROR_FOR_DIVISION_BY_ZERO',
            'NO_ENGINE_SUBSTITUTION',
        ],

Remove the values from

'mysql' => [
        'driver' => 'mysql',
        'host' => env('DB_HOST'),
        'port' => env('DB_PORT'),
        'database' => env('DB_DATABASE'),
        'username' => env('DB_USERNAME'),
        'password' => env('DB_PASSWORD'),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'strict' => true,
        'engine' => null,

just like that, the ENV file already passes the information. Maybe it get's passed twice.

Pasted from another OP's "question" which was actually an answer and not a question:

This error appear in PHP Symfony4 /PDO Doctrine with MySql 8.0.13

For my is working after this 3 steps:

Add this line to my.cnf

default_authentication_plugin=mysql_native_password

restart mysql server

Create a new MySql user/password and change it in your .env file

Without step 3, the old user is keeping the Authentication Type: "caching_sha2_password" After create a new user, then the new user will use Authentication Type: "mysql_native_password"

PS This is because of new Authentication Type in MySql 8.0.13 Server

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM