laradock 里 执行 php artisan migrate 报错

 Illuminate\Database\QueryException

  SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known (SQL: select * from information_schema.tables where table_schema = huaxuechang and table_name = migrations and table_type = 'BASE TABLE')

  at vendor/laravel/framework/src/Illuminate/Database/Connection.php:712
    708// If an exception occurs when attempting to run a query, we'll format the error
    709// message to include the bindings with SQL, which will make this exception a
    710// lot more helpful to the developer instead of just the database's errors.
    711catch (Exception $e) {712throw new QueryException(
    713$query, $this->prepareBindings($bindings), $e
    714);
    715}
    716}

      +33 vendor frames
  34  artisan:37
      Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))

我的 .env 配置如下:

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=abcabc
DB_USERNAME=root
DB_PASSWORD=root

后续备注:我根据这个帖子:laracasts.com/discuss/channels/lar...
修改成了 0.0.0.0 , 可以正常 php artisan migrate 了,但是对项目的正常操作就会提示:
Illuminate\Database\QueryException SQLSTATE[HY000] [2002] Connection refused (SQL: select * fromadmin_userswhereid= 2 limit 1)

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 18

是在容器内执行的吗

配置下 host 试试 127.0.0.1 mysql

1年前 评论
andyzu (楼主) 1年前

可能的原因:

1、容器没有启动。执行 docker-compose ps -a 查看 mysql 容器是否有启动

2、容器名称错误。打开「docker-compose.yml」搜索 MySQL,查看容器名称是否为 mysql

3、容器端口错误。打开「docker-compose.yml」搜索 MySQL,查看 ports 里的值是否为 3306

4、数据库「abcabc」不存在

5、用户名密码错误

1年前 评论
andyzu (楼主) 1年前

host 要写mysql容器的容器名(或该mysql容器的ip),默认貌似是laradock_mysql_1,你用docker ps看一下名称

1年前 评论
TRANGO (作者) 1年前
andyzu (楼主) 1年前

进 workspace 容器, ping mysql ,看看通不通

docker-compose ps ,看下运行中的容器有没有 mysql

1年前 评论
andyzu (楼主) 1年前
kis龍 (作者) 1年前

我用的是 Laravel Sail,也是这样的问题,目前我是把 host 填写为 mysql,项目正常。当我需要执行 php artisan migrate 时用 docker exec -it 容器名称 /bin/bash 进入容器内,可以正常执行

1年前 评论
陈先生

php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known 想偷懒就加host 127.0.0.1 mysql 看报错是在宿主机里面 run 了 migrate。加上试试,不行的话回来回复我

1年前 评论
郝合心 1年前
docker exec laradock-workspace-1 php artisan migrate
1年前 评论

laradock 已正常运行

file

然后进入workspace容器, 进入对应的laravel项目, 把mysql配置改为本地环境下的mysql 而非 在docker中运行的mysql

随后执行迁移命令报错

file

是不是laradock不可以连接本地的数据库啊

file

1年前 评论
陈先生 1年前
郝合心 (作者) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!