php artisan migrate 错误:提供或不知道节点名或服务名
Posted
技术标签:
【中文标题】php artisan migrate 错误:提供或不知道节点名或服务名【英文标题】:php artisan migrate error: nodename nor servname provided or not know 【发布时间】:2021-07-24 06:32:02 【问题描述】:我的 laradock 项目有问题:我已经下载并安装了 docker,并且我已经成功地完成了 laradock 对我的 laravel 项目的设置。我使用 php 7、laravel(5.5.14) 和最新版本的 laradock。我开始在 shell 中编写项目:
docker-compose up -d nginx mysql
然后所有服务启动。我的环境文件是:
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=root
DB_PASSWORD=root
但是当我尝试使用迁移时
php artisan migrate
我收到此错误:
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known (SQL: select * from information_schema.tables where table_schema = homestead and table_name = migrations)
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known
PDO::__construct(): php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known
我的名为 homestead 的数据库已创建并且可以正常工作。在我的 laravel 项目中,在迁移文件夹下我有 3 个文件 php:create_user_table、create_password_reset_table 和 create_customer_table(我已经写了这个文件)。我需要在我的数据库中创建一个名为 customer 的表,其中包含一些列:
Schema::create('customers', function (Blueprint $table)
$table->increments('id');
$table->string('first_name');
$table->string('last_name');
$table->boolean('azienda');
$table->string('iva');
$table->string('ds');
$table->boolean('fatres');
$table->string('cf');
$table->string('mail');
$table->string('telefono');
$table->integer('sponsor');
$table->string('indinst');
$table->string('civinst');
$table->string('cityInst');
$table->string('capinst');
$table->string('provinst');
$table->string('indf');
$table->string('civf');
$table->string('capf');
$table->string('provf');
$table->string('cityFatt');
$table->timestamps();
);
如何完成迁移并创建表?谢谢你的回答!
【问题讨论】:
你在哪里运行这个命令? (码头内,码头外) 嗨!我在 docker 外运行了命令,但我已经解决了在 docker 内执行 bash 的所有问题并重复了该命令。成功了! 【参考方案1】:@Stefano Zaniboni 在评论中回答了这个问题,但要扩展:
我遇到了这个问题,因为我习惯于在本地目录而不是在 virtualbox / vagrant box / docker 容器中运行 php artisan
命令。
Laravel Docs 提到您需要在虚拟机中运行 php artisan migrate
命令。
如果您使用的是 docker,您可以使用 docker ps
获取您的容器 ID。然后使用docker exec -it <containerId> /bin/bash
SSH 进入容器。然后只需将cd
放入您的项目目录并运行php artisan migrate
。
【讨论】:
我被这个咬了。在我的情况下,我试图运行迁移刷新,这是有效的: docker exec -it以上是关于php artisan migrate 错误:提供或不知道节点名或服务名的主要内容,如果未能解决你的问题,请参考以下文章
为啥 PHP artisan migrate 命令显示错误?
laravel php artisan migrate 错误(超时)
php artisan migrate 给我 Lumen 错误
Php artisan migrate - 语法错误,意外''(T字符串)