【问题标题】:Migration errors in laravellaravel 中的迁移错误
【发布时间】:2019-03-31 09:17:03
【问题描述】:

我正在尝试将表迁移到 laravel 中名为 kokodb 的数据库。 但是,我不断收到此错误:

SQLSTATE[HY000] [2054] 服务器请求客户端未知的身份验证方法(SQL: select * from information_schema.tables where table_schema = kokodb and table_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,

此错误的可能解决方案是什么?

【问题讨论】:

标签: php mysql database authentication migrate


【解决方案1】:

从另一个 OP 的“问题”中粘贴,这实际上是一个答案而不是一个问题:

此错误出现在 PHP Symfony4 /PDO Doctrine with MySql 8.0.13

因为我在这 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

如果没有第3步,旧用户保持身份验证类型:“caching_sha2_password”创建新用户后,新用户将使用身份验证类型:“mysql_native_password”

PS 这是因为 MySql 8.0.13 服务器中的新身份验证类型

【讨论】:

    【解决方案2】:

    从中删除值

    '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 文件已经传递了信息。也许它已经通过了两次。

    【讨论】:

      【解决方案3】:

      对我来说,实际上在工作空间容器中运行 artisan 命令解决了我遇到的同样问题。查看 Laravel 运行 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',
              ],
      

      【讨论】:

        猜你喜欢
        • 2018-06-05
        • 2014-06-10
        • 2015-12-19
        • 2017-06-18
        • 2018-10-01
        • 2014-10-05
        • 2015-10-18
        • 1970-01-01
        相关资源
        最近更新 更多