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.
711▕ catch (Exception $e) {
➜ 712▕ throw 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 * from
admin_userswhere
id= 2 limit 1)
是在容器内执行的吗
配置下 host 试试 127.0.0.1 mysql
可能的原因:
1、容器没有启动。执行
docker-compose ps -a
查看 mysql 容器是否有启动2、容器名称错误。打开「docker-compose.yml」搜索 MySQL,查看容器名称是否为 mysql
3、容器端口错误。打开「docker-compose.yml」搜索 MySQL,查看 ports 里的值是否为 3306
4、数据库「abcabc」不存在
5、用户名密码错误
host 要写mysql容器的容器名(或该mysql容器的ip),默认貌似是laradock_mysql_1,你用docker ps看一下名称
进 workspace 容器,
ping mysql
,看看通不通docker-compose ps
,看下运行中的容器有没有 mysql我用的是 Laravel Sail,也是这样的问题,目前我是把 host 填写为 mysql,项目正常。当我需要执行 php artisan migrate 时用 docker exec -it 容器名称 /bin/bash 进入容器内,可以正常执行
php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known
想偷懒就加host127.0.0.1 mysql
看报错是在宿主机里面 run 了 migrate。加上试试,不行的话回来回复我laradock 已正常运行
然后进入workspace容器, 进入对应的laravel项目, 把mysql配置改为本地环境下的mysql 而非 在docker中运行的mysql
随后执行迁移命令报错
是不是laradock不可以连接本地的数据库啊