【问题标题】:Unable to connect to a running Laravel Sail Docker project with TablePlus (role does not exist)无法使用 TablePlus 连接到正在运行的 Laravel Sail Docker 项目(角色不存在)
【发布时间】:2021-08-23 23:04:03
【问题描述】:

我创建了一个新的 Laravel 项目,并使用 composer require laravel/sail --devphp artisan sail:installsail up 安装了 Sail,以使项目在 Docker 中启动并运行。

通过执行这些操作,我的 .env 文件从

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_docker
DB_USERNAME=root
DB_PASSWORD=

DB_CONNECTION=pgsql
DB_HOST=pgsql
DB_PORT=5432
DB_DATABASE=laravel_docker
DB_USERNAME=sail
DB_PASSWORD=password

现在我有两个正在运行的 Docker 容器:

laravel-docker_laravel.test_1
laravel-docker_pgsql_1

我可以使用sail artisan migrate 运行基本用户迁移。

接下来我想将 Tableplus(或 Postico)与我在 Docker 中运行的 Postgresql 数据库连接起来。因此我填写了以下信息:

尝试连接时出现错误:“sail”角色不存在。

有人可以帮帮我吗?

编辑 1:添加一些终端命令的屏幕截图。我可以连接到 docker 容器中的数据库,查看表列表并获取包含 users 表中所有行的表(使用 Laravel Sail 插入播种机)

编辑 2:docker-compose ps

【问题讨论】:

  • 将主机/套接字从 localhost 更改为 pgsql 会得到什么?
  • @porloscerrosΨ 错误消息'无法将主机名“pgsql”转换为地址:提供节点名或服务名,或未知'
  • 只是为了丢弃...... .env 文件设置是否有效?也就是laravel可以连接db吗?
  • docker 容器正在运行,我能够使用sails artisan migrate 迁移基本用户表,所以我认为它可以工作。我可以做一个额外的检查。给我一点时间来写一些代码来存储一个用户
  • @porloscerrosΨ 是的,我可以运行播种机并创建用户

标签: laravel postgresql docker laravel-sail


【解决方案1】:

我有同样的问题“角色“帆”不存在”。在这种情况下,我们需要使用命令./vendor/bin/sail down -v 来删除现有的 Docker 卷数据。之后你可以执行./vendor/bin/sail up 命令。

【讨论】:

    【解决方案2】:

    感谢this post 我找到了可行的解决方案。

    docker-compose.yml 文件中更改为不同的端口解决了这个问题。

    之前:

    pgsql:
        image: 'postgres:13'
        ports:
            - '${FORWARD_DB_PORT:-5432}:5432'
    

    之后:

    pgsql:
        image: 'postgres:13'
        ports:
            - '${FORWARD_DB_PORT:-5632}:5432'
    

    在 TablePlus 中将端口号更改为5632 后,我就可以连接到数据库了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-11
      • 2021-07-30
      • 2021-04-21
      • 2016-07-15
      • 2021-08-09
      • 2021-05-05
      • 1970-01-01
      • 2022-01-02
      相关资源
      最近更新 更多