도커 + Laravel + Mariaadb를 다음을 방지하도록 구성하는 문제:SQLSTATE[HY000] [2002] 잘못된 인수
저는 도커 컨테이너 내에서 실행되도록 래라벨 어플리케이션을 구성하는 중입니다; 저는 php7.4-apache 도커 이미지 위에 래라벨 측면을 성공적으로 구성했고, db를 위해 mariadb10.3 이미지를 별도로 구성했습니다.여러 연결 문제를 해결했지만 결국 다음 오류로 귀결되었습니다.
SQLSTATE[HY000] [2002] Invalid argument (SQL: select * from information_schema.tables where table_schema = laravel_db and table_name = migrations and table_type = 'BASE TABLE')
위의 특정 오류 인스턴스는 ppartisan migration을 실행할 때 나타나지만, 저는 ppartisan tinker를 사용하고 제가 확인한 테이블에 대한 기본 쿼리를 시도할 때와 제 laravel 앱을 통해 쿼리를 실행할 때(테스트 서버의 사이트를 방문하여 트리거됨) 같은 두 곳에서도 동일한 오류가 나타납니다.다음과 같은 오류가 반복됩니다.
\DB::table('users')->get();
Illuminate/Database/QueryException with message 'SQLSTATE[HY000] [2002] Invalid argument (SQL: select * from `users`)'
그리고 도커 로그에서:
PDOException(code: 2002): SQLSTATE[HY000] [2002] Invalid argument at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70
SO를 통해 이 특정 오류에 대한 정보는 SO#1 SO#2라는 두 게시물에서 찾을 수 있습니다.
둘 다 "TCP/IP(1)를 지정하거나 MySQL에 유닉스 소켓 위치(2)를 알려줘야 한다"고 명시하지만, 저는 도커를 사용하고 있으며 .env 파일에 표시된 도커 컨테이너 이름을 통해 db를 참조하고 있습니다.
DB_CONNECTION=mysql
DB_HOST=db
DB_DATABASE=laravel_db
DB_USERNAME=root
DB_PASSWORD=<MY_PASSWORD>
DB_HOST=3333
그래서 제 질문은 이것입니다: 도커를 사용하는 동안 이 오류를 어떻게 우회할 수 있을까요?.env 파일의 docker container를 참조해야 docker 쪽에서 작업이 가능하기 때문에 SO에서 건의한 사항을 이행할 수 없습니다.또한 SO 외부에서 광범위하게 검색했지만(오류 문서를 위해 Mariaadb 문서를 살펴보고 광범위하게 구글링) 아무 소용이 없었습니다.
필요할 경우를 대비해 도커로 작성한 파일이 여기 있습니다.
version: "2.2"
services:
app:
image: php:7.4-apache
ports:
- "8060:80"
tty: true
restart: unless-stopped
working_dir: /var/www/html
container_name: app
build:
context: .
dockerfile: app_dockerfile
networks:
- app-network
db:
image: mariadb:10.3
container_name: db
restart: unless-stopped
tty: true
environment:
MYSQL_ROOT_PASSWORD: <MY_PASSWORD>
MYSQL_DATABASE: laravel_db
SERVICE_TAGS: dev
SERVICE_NAME: mysql
networks:
- app-network
volumes:
- dbdata:/var/lib/mysql/docker_db/
build:
context: .
dockerfile: db_dockerfile
ports:
- "3333:3306"
networks:
app-network:
driver: bridge
volumes:
dbdata:
driver: local
여러분 감사합니다, 정말 감사합니다.
.env 파일의 호스트가 잘못되었을 수도 있습니까?table plus 등의 클라이언트를 통해 데이터베이스에 연결해 본 적이 있습니까?
언급URL : https://stackoverflow.com/questions/64015832/issue-configuring-docker-laravel-mariadb-to-avoid-sqlstatehy000-2002-in
'programing' 카테고리의 다른 글
Python 파일로 긴 상수 목록 가져오기 (0) | 2023.09.07 |
---|---|
Laravel : 데이터베이스에 첫번째 사용자를 삽입하는 방법 (0) | 2023.09.07 |
Oracle User가 없는 경우 생성 (0) | 2023.09.07 |
HTML에서 가로 인쇄 (0) | 2023.09.02 |
CrudRepository를 유형으로 확인할 수 없습니다. (0) | 2023.09.02 |