Laravel、Jetstream 和 Inertia 的数据库连接问题

DB connection issue with Laravel, Jetstream and Inertia

我已经使用 Laravel 和 Sail (Docker) 以及 Jetstream 和 Inertia.js 建立了一个新项目,我已经完成了设置,但是在访问时出现了这个错误本地站点:

Illuminate \ Database\ QueryException
PHP 8.1.3
9.3.1
SQLSTATE[HY000] [2002] Connection refused

    select * from `sessions` where `id` = KdN2zl3PoYshRyfBJOCQi4nNLPnezUJZJi6MgXGR limit 1

这可以通过将 DB_HOST127.0.0.1 更改为 mysql 来解决,然后我可以在本地访问该站点,但是当我执行类似 php artisan migrate 的操作时我收到错误:

Illuminate\Database\QueryException

  SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known (SQL: select * from information_schema.tables where table_schema = db and table_name = migrations and table_type = 'BASE TABLE')

DB_HOST 设置为 127.0.0.1 的地方,php artisan migrate 工作正常,所以通过修复一个它会破坏另一个,请帮助

如果您使用 Laravel Sail,则必须使用 sail artisan migrate 而不是 php artisan migrate

在这种情况下,您使用的是 Docker 容器 (Sail),如果您想使用关联的数据库(docker compose ps 查看所有服务),您必须执行 docker compose exec SERVICE_NAME bash这样您就可以连接到该服务,然后 运行 您想要的任何普通命令。

因为你使用的是Sail,你必须运行 sail artisan migrate:

  • sail artisan 是 运行 任何 php artisan 命令。
  • migrate 当然会在相关数据库上 运行 php artisan migrate...

因此,您必须使用 mysql 或您在 Sail 上的姓名...

请阅读 documentation,因为您的问题已在其中 100% 得到解释...不要试图成为魔术师,请阅读文档...