【问题标题】:Laravel Migration is working but cannot access with EloquentLaravel 迁移正在运行,但无法使用 Eloquent 访问
【发布时间】:2019-08-26 02:41:17
【问题描述】:

我的 Laravel 有一些问题。

迁移工作正常,但是当我尝试使用 Eloquent 插入或访问数据时出现错误:

“SQLSTATE[HY000] [2002] 连接被拒绝”

.env 文件:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=myddb
DB_USERNAME=root
DB_PASSWORD=password

database.php 文件:

'driver' => 'mysql',
'host' =>'127.0.0.1',
'port' => '3306',
'database' =>'myddb',
'username' => 'root',
'password' => 'password',

我使用 Docker

【问题讨论】:

  • 当你使用 docker 检查主机名。数据库应该在另一个容器中,所以输入容器/服务名称作为数据库主机,而不是本地主机
  • 向我们展示您的相关 docker-compose.yml sn-p(您定义 mysql 的那个)
  • 我对 Docker 还很陌生,所以这里我的 ddb 部分在我的 docker-compose.yml mysql: build: ./bin/mysql container_name: '5.7-mysql' restart: 'always' ports: - "${HOST_MACHINE_MYSQL_PORT}:3306" volumes: - ${MYSQL_DATA_DIR-./data/mysql}:/var/lib/mysql - ${MYSQL_LOG_DIR-./logs/mysql}:/var/log/mysql environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_DATABASE: ${MYSQL_DATABASE} MYSQL_USER: ${MYSQL_USER} MYSQL_PASSWORD: ${MYSQL_PASSWORD} 我也使用 phpmyadmin(它工作正常)

标签: mysql laravel docker laravel-5 eloquent


【解决方案1】:

您的数据库应该是您的 docker 容器,因此它应该如下所示:

DB_CONNECTION=mysql
DB_HOST=database <== needs to be named after your database container name
DB_PORT=3306
DB_DATABASE=myddb
DB_USERNAME=root
DB_PASSWORD=password

【讨论】:

    【解决方案2】:

    假设您的 docker-compose.yml 显示以下内容:

    version: '2'
    services:
    
      thedatabase:
        build:...
    
      web:
        ...
    

    您的.env 文件应为:

    DB_HOST=thedatabase
    

    这样你的 docker 镜像就可以通信了。并且总是当你必须运行任何工匠命令时,只需输入图像并运行命令。例如:

    my@computer $ docker-compose exec web bash
    docker:web $ php artisan migrate
    

    或者像这样命令图像运行命令:

    docker-compose exec web php artisan migrate
    

    【讨论】:

    • 谢谢它完美的工作!哇,我不知道它与 Docker 一起工作。
    猜你喜欢
    • 2017-06-11
    • 1970-01-01
    • 2020-02-12
    • 2017-05-07
    • 1970-01-01
    • 1970-01-01
    • 2021-06-15
    • 2017-02-17
    • 2014-10-04
    相关资源
    最近更新 更多