【问题标题】:Laravel 5.5 with MySQL 8.0.11: 'sql_mode' can't be set to the value of 'NO_AUTO_CREATE_USER'带有 MySQL 8.0.11 的 Laravel 5.5:“sql_mode”不能设置为“NO_AUTO_CREATE_USER”的值
【发布时间】:2018-10-08 16:03:09
【问题描述】:

我刚刚安装了 MySQL 8.0.11,将我的应用程序的数据库转移到其中,并更改了 laravel 数据库设置以使用新的。现在每次我尝试登录时都会出现以下错误:

ERROR 1231 (42000):
Variable 'sql_mode' can't be set to the value of 'NO_AUTO_CREATE_USER'

我尝试手动设置NO_AUTO_CREATE_USER

set global sql_mode="..., NO_AUTO_CREATE_USER, ...";

但我得到了同样的错误。我该如何解决问题并使用 MySQL 8.0.11 运行 laravel 5.5

【问题讨论】:

    标签: mysql laravel laravel-5.5


    【解决方案1】:

    你的 laravel connexion (config / database.php) 应该是这样的:

    'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', 'localhost'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
            'modes'  => [
                'ONLY_FULL_GROUP_BY',
                'STRICT_TRANS_TABLES',
                'NO_ZERO_IN_DATE',
                'NO_ZERO_DATE',
                'ERROR_FOR_DIVISION_BY_ZERO',
                'NO_ENGINE_SUBSTITUTION',
                ],
        ],
    

    【讨论】:

      【解决方案2】:

      在每个 MySQL 连接上添加以下内容:

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

      【讨论】:

        【解决方案3】:

        Laravel 5.5 的下一个版本将增加对 MySQL 8.0 的支持:https://github.com/laravel/framework/pull/24038

        更新:Laravel 5.5.41 已经发布。

        【讨论】:

          【解决方案4】:

          MySQL 8.0 不支持 NO_AUTO_CREATE_USER

          文档:https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-11.html

          【讨论】:

            【解决方案5】:

            由于 MySQL 8.0 目前(今天)不支持 NO_AUTO_CREATE_USER 您应该在备份中找到并替换:“NO_AUTO_CREATE_USER”,按空格

            这样从 5.7 备份将在 8.0 中恢复正常

            【讨论】:

              【解决方案6】:

              我在 Windows Wampserver 上使用 MySQL 8.0.18,并将以下内容添加到 Laravel 的 database.php

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

              【讨论】:

                【解决方案7】:

                如何修复 laravel NO_AUTO_CREATE_USER database.php的代码


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

                【讨论】:

                  猜你喜欢
                  • 2023-03-08
                  • 1970-01-01
                  • 2021-08-17
                  • 2019-12-13
                  • 2013-12-20
                  • 2011-01-20
                  • 2019-05-29
                  • 2017-06-02
                  • 2018-11-07
                  相关资源
                  最近更新 更多