不能将 migrate 与帆 laravel 一起使用
Posted
技术标签:
【中文标题】不能将 migrate 与帆 laravel 一起使用【英文标题】:can't use migrate with sail laravel 【发布时间】:2021-03-23 19:53:08 【问题描述】:您好,我刚刚尝试使用 Sai 安装 Laravel 8,但遇到了问题
我所做的是首先从 laravel 自己的页面运行 curl one-liner
curl -s https://laravel.build/sail-test | bash
一旦完成,我就按照它说的运行
cd sail-test && ./vendor/bin/sail up
一切正常,我可以连接到数据库,我可以在 http://localhost 上看到该站点但是在尝试迁移时出现以下错误:
$ sail artisan migrate:install
Illuminate\Database\QueryException
SQLSTATE[HY000] [2002] No route to host (SQL: create table `migrations` (`id` int unsigned not null auto_increment primary key, `migration` varchar(255) not null, `batch` int not null) default character set utf8mb4 collate 'utf8mb4_unicode_ci')
at vendor/laravel/framework/src/Illuminate/Database/Connection.php:678
674▕ // If an exception occurs when attempting to run a query, we'll format the error
675▕ // message to include the bindings with SQL, which will make this exception a
676▕ // lot more helpful to the developer instead of just the database's errors.
677▕ catch (Exception $e)
➜ 678▕ throw new QueryException(
679▕ $query, $this->prepareBindings($bindings), $e
680▕ );
681▕
682▕
+29 vendor frames
30 artisan:37
Illuminate\Foundation\Console\Kernel::handle()
我需要更改.env
文件中的任何内容还是需要先进行任何其他更改?
【问题讨论】:
您的 .env 文件中是否设置了密码?如果是这样,您可能需要在 docker-compose.yml 文件中将mysql_ALLOW_EMPTY_PASSWORD
设置为“否”。
【参考方案1】:
首先(此命令将返回您的 mysql 容器 IP 地址):
$ docker inspect -f 'range.NetworkSettings.Networks.IPAddressend' <container_name_or_container_ID>
您的 .env 文件中的第二个:
DB_HOST=<ip_address_returned_from_command_above>
然后:
$ sail artisan migrate
编辑:
只需将数据库容器的名称添加到您的 DB_HOST 环境变量中:
...
DB_HOST=mysql
...
【讨论】:
尝试这个后我得到了相同的响应 为我工作,除了只有 root 用户名和空白密码 您也可以使用 docker 镜像的名称(在 docker-compose.yml 中找到)。默认为DB_HOST=mysql
用 DB_HOST=mysql(docker 镜像的名称)替换 DB_HOST=127.0.0.1 后为我工作
container_name_or_container_ID =??如何获得 container_name_or_container_ID ?【参考方案2】:
您需要通过登录sailer 来执行artisan 命令。步骤如下。
转到您的项目目录并运行以下命令
帆壳
在该命令之后,您将登录到您的容器中,您可以运行 artisan migrate 命令。
【讨论】:
以上是关于不能将 migrate 与帆 laravel 一起使用的主要内容,如果未能解决你的问题,请参考以下文章
php Laravel Migration将Null设置为exisiting列
Laravel Artisan Migrate 命令创建表但不将每个迁移文件填充到迁移表
将 npm db-migrate 与 Elastic Beanstalk 一起使用