Php Laravel 6-Mysql-Docker-Illumb\Database\QueryException SQLSTATE[HY000]:一般错误:2036

Php Laravel 6-Mysql-Docker-Illumb\Database\QueryException SQLSTATE[HY000]:一般错误:2036,php,mysql,laravel-6,Php,Mysql,Laravel 6,登录管理页面时从laravel获得以下异常。 我必须在.env中更改任何内容吗 .env: DB_CONNECTION=mysql DB_HOST=mysql DB_PORT=3306 DB_DATABASE=test DB_USERNAME=root DB_PASSWORD=test version: '2' services: mysql: image: mysql:latest volumes: - "./data/db:/var/lib/mys

登录管理页面时从laravel获得以下异常。 我必须在.env中更改任何内容吗

.env:

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=test
DB_USERNAME=root
DB_PASSWORD=test
version: '2'
services:
  mysql:
    image: mysql:latest
    volumes:
      - "./data/db:/var/lib/mysql"
    ports:
      - "3306:3306"
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=test
      - MYSQL_DATABASE=test
      - MYSQL_USER=root
      - MYSQL_PASSWORD=test
  laravel-env:
    build: ./dockerfiles
    depends_on:
      - mysql
    volumes:
      - ".:/var/www/laravel-boilerplate"
      - "./dockerfiles/config/php/php-fpm.conf:/etc/php-fpm.conf"
      - "./dockerfiles/config/php/www.conf:/etc/php-fpm.d/www.conf"
      - "./dockerfiles/config/php/php.ini:/usr/local/etc/php/php.ini"
      - "./dockerfiles/config/php/xdebug.ini:/usr/local/etc/php/conf.d/xdebug.ini"
  nginx:
    image: nginx:latest
    depends_on:
      - laravel-env
    volumes:
      - ".:/var/www/laravel-boilerplate"
      - "./dockerfiles/config/nginx/default.conf:/etc/nginx/conf.d/default.conf"
    ports:
      - "8084:80"
    restart: always
主机的DB查询结果:即使用户存在,我也可以从mysql命令获得结果

mysql> SELECT User, Host FROM mysql.user;
+------------------+-----------+
| User             | Host      |
+------------------+-----------+
| root             | %         |
| root             | 127.0.0.1 |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
| root             | mysql     |
+------------------+-----------+
错误跟踪:

[2021-05-12 07:58:41] local.ERROR: SQLSTATE[HY000]: General error: 2036  (SQL: select * from `members` where `email` = member@sample.com limit 1) {"exception":"[object] (Illuminate\\Database\\QueryException(code: HY000): SQLSTATE[HY000]: General error: 2036  (SQL: select * from `members` where `email` = member@sample.com limit 1) at /var/www/laravel-boilerplate/vendor/laravel/framework/src/Illuminate/Database/Connection.php:669)
[stacktrace]
#0 /var/www/laravel-boilerplate/vendor/laravel/framework/src/Illuminate/Database/Connection.php(629): Illuminate\\Database\\Connection->runQueryCallback('select * from `...', Array, Object(Closure))
#1 /var/www/laravel-boilerplate/vendor/laravel/framework/src/Illuminate/Database/Connection.php(338): Illuminate\\Database\\Connection->run('select * from `...', Array, Object(Closure))
#2 /var/www/laravel-boilerplate/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(2159): Illuminate\\Database\\Connection->select('select * from `...', Array, true)
#3 /var/www/laravel-boilerplate/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(2147): Illuminate\\Database\\Query\\Builder->runSelect()
#4 /var/www/laravel-boilerplate/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(2619): Illuminate\\Database\\Query\\Builder->Illuminate\\Database\\Query\\{closure}()
#5 /var/www/laravel-boilerplate/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(2148): Illuminate\\Database\\Query\\Builder->onceWithColumns(Array, Object(Closure))
#6 /var/www/laravel-boilerplate/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(546): Illuminate\\Database\\Query\\Builder->get(Array)
#7 /var/www/laravel-boilerplate/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(530): Illuminate\\Database\\Eloquent\\Builder->getModels(Array)
#8 /var/www/laravel-boilerplate/vendor/laravel/framework/src/Illuminate/Database/Concerns/BuildsQueries.php(143): Illuminate\\Database\\Eloquent\\Builder->get(Array)
#9 /var/www/laravel-boilerplate/vendor/laravel/framework/src/Illuminate/Auth/EloquentUserProvider.php(131): Illuminate\\Database\\Eloquent\\Builder->first()
#10 /var/www/laravel-boilerplate/vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php(357): Illuminate\\Auth\\EloquentUserProvider->retrieveByCredentials(Array)
#11 /var/www/laravel-boilerplate/vendor/laravel/framework/src/Illuminate/Auth/AuthManager.php(307): Illuminate\\Auth\\SessionGuard->attempt(Array)
#12 /var/www/laravel-boilerplate/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php(261): Illuminate\\Auth\\AuthManager->__call('attempt', Array)
#13 /var/www/laravel-boilerplate/vendor/appname/core/src/Http/Controllers/Api/Admin/LoginController.php(23): Illuminate\\Support\\Facades\\Facade::__callStatic('attempt', Array)
#14 /var/www/laravel-boilerplate/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): appname\\Core\\Http\\Controllers\\Api\\Admin\\LoginController->authenticate(Object(Illuminate\\Http\\Request))
#15 /var/www/laravel-boilerplate/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45): Illuminate\\Routing\\Controller->callAction('authenticate', Array)
#16 /var/www/laravel-boilerplate/vendor/laravel/framework/src/Illuminate/Routing/Route.php(219): Illuminate\\Routing\\ControllerDispatcher->dispatch(Object(Illuminate\\Routing\\Route), Object(appname\\Core\\Http\\Controllers\\Api\\Admin\\LoginController), 'authenticate')
附加docker编写文件:

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=test
DB_USERNAME=root
DB_PASSWORD=test
version: '2'
services:
  mysql:
    image: mysql:latest
    volumes:
      - "./data/db:/var/lib/mysql"
    ports:
      - "3306:3306"
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=test
      - MYSQL_DATABASE=test
      - MYSQL_USER=root
      - MYSQL_PASSWORD=test
  laravel-env:
    build: ./dockerfiles
    depends_on:
      - mysql
    volumes:
      - ".:/var/www/laravel-boilerplate"
      - "./dockerfiles/config/php/php-fpm.conf:/etc/php-fpm.conf"
      - "./dockerfiles/config/php/www.conf:/etc/php-fpm.d/www.conf"
      - "./dockerfiles/config/php/php.ini:/usr/local/etc/php/php.ini"
      - "./dockerfiles/config/php/xdebug.ini:/usr/local/etc/php/conf.d/xdebug.ini"
  nginx:
    image: nginx:latest
    depends_on:
      - laravel-env
    volumes:
      - ".:/var/www/laravel-boilerplate"
      - "./dockerfiles/config/nginx/default.conf:/etc/nginx/conf.d/default.conf"
    ports:
      - "8084:80"
    restart: always
docker容器ls也显示以下结果

CONTAINER ID   IMAGE                 COMMAND                 PORTS                               NAMES
58f22cb28103   appname_laravel-env   "php-fpm -F -O"         9000/tcp                            appname_laravel-env_1
6ffed6f28b56   nginx:latest          "/docker-entrypoint.…"  0.0.0.0:8084->80/tcp                appname_nginx_1
5063c5234423   mysql:latest          "docker-entrypoint.s…"  0.0.0.0:3306->3306/tcp, 33060/tcp   appname_mysql_1

附加了我的docker compose文件供参考,请让我知道我在做什么或配置错误

如果要从
docker compose
启动
docker
容器,则应将
DB\u主机设置为为数据库服务设置的
container\u名称。如果没有明确设置,可以从
docker container ls
中找到它。如果没有,您需要将
DB_主机
更改为
127.0.0.1
,并将
DB_端口
更改为您公开的端口(如果您的web服务和数据库服务是从
docker compose
运行的,则不需要,因为它们应该在同一网络中).Hi@alistaircol也添加了docker容器ls命令结果和docker compose文件。如果有帮助,请告诉我。谢谢。我认为,如果设置
DB\u HOST=appname\u mysql\u 1
,应该可以工作。进行此更改后,请记住运行
php artisan config:clear
,然后再次尝试查询。@alistaircol未成功。。。更改DB_HOST并运行命令php artisan config:clear too后出现相同错误。没有成功