PHPFixing
  • Privacy Policy
  • TOS
  • Ask Question
  • Contact Us
  • Home
  • PHP
  • Programming
  • SQL Injection
  • Web3.0

Thursday, January 13, 2022

[FIXED] How to fix SQLSTATE[HY000] [2002] Connection refused, when running : php artisan migrate in docker bash?

 January 13, 2022     docker, laravel, mysql     No comments   

Issue

I'm trying to run "php artisan migrate" in docker app container bash, after successfully installing mysql, nginx, php and etc. containers.

But this error comes up :

SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_schema.tables where table_schema = code_clan and table_name = migrations and table_type = 'B ASE TABLE')

This is my folder/files structure :

> docker-my-app(folder)
  > docker(folder)
    > nginx(folder)
      > default.conf
    > php-fpm(folder)
      > Dockerfile
  > src(folder)
    > www(folder)
      > Laravel Project Files...
      > **.env**

  **docker-compose.yml**

This is my composer file (docker-compose.yml):

version: '3.8'

services:

  nginx:
    ports:
      - "80:80"
    image: nginx
    tty : true
    restart: unless-stopped
    volumes:
      - ./src/www:/usr/share/nginx/html:delegated
      - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
    networks:
      - thenetwork
  
  app:
    build: ./docker/php-fpm
    container_name: myapp
    tty : true
    restart: unless-stopped
    environment:
      SERVICE_NAME: myapp
      SERVICE_TAGS: dev
    networks:
      - thenetwork
    working_dir: /usr/share/nginx/html
    volumes:
      - ./src/www:/usr/share/nginx/html
      - ./data/upload:/storage/uploads
  
  memcached:
    image: memcached

  mysql:
    ports:
      - "3306:3306"
    image: mysql:5.6
    restart: unless-stopped
    tty: true
    volumes:
      - mysqlvolume:/var/lib/mysql
      - ./data/mysql-import:/docker-entrypoint-initdb.d
    environment:
        - MYSQL_ROOT_PASSWORD=pwd
        - MYSQL_HOST=localhost
        - MYSQL_PORT=3306
    networks:
      - thenetwork

  redis:
    ports:
      - "6379:6379"
    image: redis



#Docker netwtorks
networks:
  thenetwork:
    driver: bridge
volumes:
  mysqlvolume:
    driver: local

This is my .env file (inside the root of laravel project):

APP_NAME=MyApp
APP_ENV=local
APP_KEY=base64:generatedKey
APP_DEBUG=true
APP_URL=http://localhost

LOG_CHANNEL=daily
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=lara_app
DB_USERNAME=root
DB_PASSWORD=pwd
...

Inside docker-my-app cmd, I run :

 docker exec -it myapp bash

And inside there, I run :

/usr/share/nginx/html$ php artisan migrate

all the containers, including mysql are running successfuly. And the error mentioned at the beginning happens.

Can you figure out what happens here?


Solution

After trying different ways:

  1. like setting up an .env file for docker-compose.yml
  2. and trying to clear the cache of laravel config and cache files inside docker myapp bash , like this:
php artisan config:clear
php artisan cache:clear
  1. at the end changing the DB_HOST constant inside laravel root .env file from 127.0.0.1 to mysql, solved my problem and migration and everything related to mysql is fine now. The reason was that I named the mysql service inside docker-compose.yml file to mysql.

.env file :

APP_NAME=MyApp
APP_ENV=local
APP_KEY=base64:generatedKey
APP_DEBUG=true
APP_URL=http://localhost

LOG_CHANNEL=daily
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug

DB_CONNECTION=mysql
**DB_HOST=mysql**
DB_PORT=3306
DB_DATABASE=lara_app
DB_USERNAME=root
DB_PASSWORD=pwd
...


Answered By - Aarony
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
Newer Post Older Post Home

0 Comments:

Post a Comment

Note: Only a member of this blog may post a comment.

Total Pageviews

Featured Post

Why Learn PHP Programming

Why Learn PHP Programming A widely-used open source scripting language PHP is one of the most popular programming languages in the world. It...

Subscribe To

Posts
Atom
Posts
Comments
Atom
Comments

Copyright © PHPFixing