laravel中的php迁移错误

q35jwt9p  于 2021-06-18  发布在  Mysql
关注(0)|答案(3)|浏览(304)

我正在尝试将一个表迁移到一个名为kokodb的数据库中。然而,我不断得到这个错误:
sqlstate[hy000][2054]服务器请求的身份验证方法客户端未知(sql:select*from information\u schema.tables where table\u schema=kokodb and table\u name=migrations)
这是我的环境文件:

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

下面是database.php代码:

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

这个错误的可能解决办法是什么?

ryevplcw

ryevplcw1#

从中删除值

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

就像那样,env文件已经传递了信息。也许已经过了两次了。

aurhwmvo

aurhwmvo2#

对我来说,在工作区容器中实际运行artisan命令解决了与我相同的问题。查看laravel run artisan命令。
在config/database.php的末尾添加以下代码,并插入'engine':

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

m2xkgtsf3#

从另一篇专栏文章的“问题”中粘贴出来,这实际上是一个答案,而不是一个问题:
这个错误出现在mysql 8.0.13的php symfony4/pdo中
对于我来说,在这3个步骤之后工作:

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

如果没有第三步,老用户在创建新用户后会保留身份验证类型:“caching\u sha2\u password”,新用户会使用身份验证类型:“mysql\u native\u password”
ps这是因为MySQL8.0.13服务器中有新的身份验证类型

相关问题