개발 Q&A

제목 db 연결이 안된다고 나오는데요;
글쓴이 ehnuje 작성시각 2012/07/30 13:53:33
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 23336   RSS

A Database Error Occurred

Unable to connect to your database server using the provided settings.

Filename: core/Loader.php

Line Number: 346

database config파일은 잘 설정되어있는거같은데 왜자꼬 연결이 안될까요 ㅜㅜ
innoDB에 별다른 설정이 필요한건지... 
 다음글 APMSETUP + Cygwin (3)
 이전글 트위터 팔로윙 팔로워 시스템 DB (7)

댓글

ehnuje / 2012/07/30 14:05:42 / 추천 0
 ERROR - 2012-07-30 14:27:29 --> Severity: Warning  --> mysql_pconnect() has been disabled for security reasons /home/hosting_users/morwings2/www/ci/system/database/drivers/mysql/mysql_driver.php 91

이 문제 대문에 pconnect를 false로 하니까 되긴되는데 무슨 문제인가요?;
milosz / 2012/07/30 14:35:21 / 추천 0
 보안문제로 pconnect가 기본값이 true로 되어 있습니다만 지금 사용하시는 웹호스팅에서 해당 기능을 제공하지 않는 경우 위와 같은 문제가 발생합니다.
ehnuje / 2012/07/30 16:10:08 / 추천 0
 아 그렇군요 감사합니다!
mixiaoli / 2026/03/16 15:14:03 / 추천 0

보통 이 에러는 InnoDB 때문이라기보다 DB 접속 설정 자체 문제일 가능성이 큽니다. CodeIgniter는 application/config/database.phphostname, username, password, database 같은 접속 정보를 두고 연결하며, InnoDB는 MySQL의 스토리지 엔진이라 “접속이 되느냐”와는 직접적인 원인이 아닌 경우가 대부분입니다.

즉,
Unable to connect to your database server using the provided settings.
메시지는 대개 아래 항목 중 하나를 먼저 의심하셔야 합니다.
active_group, hostname, username, password, database, dbdriver 값이 실제 서버와 맞는지 다시 확인해보세요. CI는 이 값들로 DB 연결을 초기화합니다.

특히 많이 놓치는 것이 hostname입니다. MySQL 문서 기준으로 localhost는 환경에 따라 TCP가 아니라 소켓(socket) 방식으로 붙으려고 할 수 있습니다. 그래서 소켓 경로가 맞지 않으면 연결 실패가 날 수 있고, 이럴 때는 localhost 대신 127.0.0.1로 바꿔보거나, 포트/소켓 값을 명시해보면 해결되는 경우가 많습니다.

그래서 우선은 database.php를 이런 식으로 가장 기본형으로 다시 점검해보시는 게 좋습니다.


 
 
$db['default']['hostname'] = '127.0.0.1'; // 또는 localhost
$db['default']['username'] = '계정명';
$db['default']['password'] = '비밀번호';
$db['default']['database'] = 'DB명';
$db['default']['dbdriver'] = 'mysqli';
$db['default']['db_debug'] = TRUE;
 

MySQL 계열이면 dbdriver가 현재 서버 환경과 맞아야 하고, 필요하면 포트도 확인해보셔야 합니다. CI 공식 문서도 접속 그룹 설정과 수동 연결 방식을 제공합니다.

추가로는 이것도 꼭 확인해보세요.

  1. DB 서버가 실제로 실행 중인지

  2. 같은 계정/비밀번호로 phpMyAdmin이나 mysql client에서 접속이 되는지

  3. 해당 계정에 그 DB에 대한 권한이 있는지

  4. localhost 대신 127.0.0.1로 바꿔도 같은지

게시판 답변용으로는 이렇게 쓰시면 자연스럽습니다.


 
 
InnoDB 때문은 아닐 가능성이 큽니다.
InnoDB는 테이블 저장 엔진이고,
지금 에러는 보통 DB 접속 정보가 맞지 않을 때 나는 경우가 많습니다.

즉,
- hostname
- username
- password
- database
- dbdriver
- active_group

이 값들을 먼저 다시 확인해보셔야 합니다.

특히 localhost 는 환경에 따라 소켓 방식으로 접속해서
오히려 연결이 안 되는 경우가 있으니
127.0.0.1 로 바꿔서도 한번 테스트해보세요.

예를 들어

$db['default']['hostname'] = '127.0.0.1';
$db['default']['username'] = '계정명';
$db['default']['password'] = '비밀번호';
$db['default']['database'] = 'DB명';
$db['default']['dbdriver'] = 'mysqli';

이렇게 가장 기본형으로 맞춰놓고 확인해보시면 됩니다.

즉, 지금은 InnoDB 설정보다
DB 계정정보, 호스트명, 드라이버명 쪽을 먼저 점검하시는 게 맞습니다.