ci4 의 app/config/Database.php 파일에는 db설정이 들어있습니다.
개인적으로 DB암호등 설정이 여기저기 돌아다니는걸 좋아하지 않아 .env 파일에 다 몰아넣는 편입니다.
그래서 처음엔 아래와 같이 만들었는데요.
database.old.hostname = "localhost"
database.old.database = "DB명"
database.old.username = "아이디"
database.old.password = "암호"
database.old.DBDriver = "MySQLi"
문제는 이렇게 설정하고 DB불러오려고 해도 에러가 났어요.
그러니까 old라고 설정했음에도 그거 못찾겠다고 하는겁니다.
생각해보니 .env 파일에 설정하기 전엔 Database.php 파일에 설정해줬으니까.
코드를 살펴보니 Database.php에서 설정을 갖고 오고 그 중 env에서 설정하면 값을 치환하는 형태로 되어 있었어요.
그래서 똑같이 위에 mysql 관련 설정을 복사하고
변수를 $old 로 지저애 저장해서 다시 실행했더니 정상 실행이 되었습니다.
github에 공개된 상태(public)으로 repo에 올릴때 저처럼 DB정보를 공개하고 싶지 않거나, 여러 보안상의 이유로 공개가 불가능할때가 있습니다.
이 경우 DB추가는 .env 파일과 Database.php 파일 양쪽에 입력이 필요합니다.
그 후 db_connect("old") 로 그룹 이름을 넣어주면 되죠.
DB설정 정보가 많아질수록 어찌보면 무의미해보이지만, 계속 복사해줘야 하는 상황이 생겼습니다.
환경설정은 초기에 한번 하고 안하는 경우가 많아서 오래된 개발자들도 까먹는 경우가 많습니다.
그리고 DB정보는 하나만 입력하고 2개 이상 입력하는 경우도 흔치 않습니다.
어차피 개발환경과 운영환경이 다르니 각각의 env에 default 를 각각 잡아 쓰는 경우도 많으니까요.
그래서 저도 잊어먹지 않기 위해 적어놨네요.