php artisan迁移错误:提供了nodename或servname或不知道
我的laradock项目遇到了麻烦:我已经下载并安装了docker,我已经成功地用laradock完成了laravel项目的设置。我使用PHP7、laravel(5.5.14)和laradock的最新版本。我开始在shell中编写项目:php artisan迁移错误:提供了nodename或servname或不知道,php,mysql,laravel,docker-compose,laradock,Php,Mysql,Laravel,Docker Compose,Laradock,我的laradock项目遇到了麻烦:我已经下载并安装了docker,我已经成功地用laradock完成了laravel项目的设置。我使用PHP7、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_USERNAM
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();
});
如何完成迁移并创建表?谢谢你的回答 @Stefano Zaniboni在评论中回答了这一问题,但要进一步说明: 我遇到了这个问题,因为我习惯于在本地目录中运行
php-artisan
命令,而不是在virtualbox/vagrant-box/docker容器中运行
提到您需要从虚拟机中运行php artisan migrate
命令
如果您使用的是docker,则可以使用
docker ps
获取容器id。然后使用docker exec-it/bin/bash
将ssh连接到容器中。然后只需将cd
放入项目目录并运行php-artisan-migrate
在哪里运行此命令?(里面的码头工人,外面的码头工人)嗨!我在docker外部运行了该命令,但我已经解决了在docker内部执行bash的所有问题,并重复了该命令。成功了!我被这个咬了一口。在我的例子中,我试图运行一个迁移刷新,这就是工作原理:docker exec-it php artisan迁移:刷新