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_tablecreate_password_reset_tablecreate_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:refresh

以上是关于php artisan migrate 错误:提供或不知道节点名或服务名的主要内容,如果未能解决你的问题,请参考以下文章

为啥 PHP artisan migrate 命令显示错误?

laravel php artisan migrate 错误(超时)

php artisan migrate 给我 Lumen 错误

Php artisan migrate - 语法错误,意外''(T字符串)

laravel 错误 1071 密钥太长 php artisan migrate [重复]

Laravel 5.2 php artisan migrate:回滚错误