데이터베이스 설정 Database Configuration
CodeIgniter 는 데이터베이스 설정(username, password, 데이터베이스 이름 등)을 저장하는 설정파일을 제공합니다.설정파일은 아래의 위치에 있습니다:
application/config/database.php
설정은 다차원배열로 아래예제 처럼 저장됩니다.:
$db['default']['hostname'] = "localhost";
$db['default']['username'] = "root";
$db['default']['password'] = "";
$db['default']['database'] = "database_name";
$db['default']['dbdriver'] = "mysql";
$db['default']['dbprefix'] = "";
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = FALSE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = "";
$db['default']['char_set'] = "utf8";
$db['default']['dbcollat'] = "utf8_general_ci";
단순한배열대신 다차원배열을 사용하는 이유는 선택적으로 여러개의 커넥션셋을 쉽게 사용하도록 하기 위해서 입니다.예를 들어 ,당신이 하나의 CoideIgniter 설치로 개발,라이브,테스트 등 여러가지 환경에서 작업한다고 했을때 ,여러개의 커넥션셋을 설정해 둔 다음 각 환경에 맞는 커넥션셋으로 각각 전환할 수 있습니다. 예를들어 "test" 환경에 대한 정보를 다음과 같이 설정합니다.:
$db['test']['hostname'] = "localhost";
$db['test']['username'] = "root";
$db['test']['password'] = "";
$db['test']['database'] = "database_name";
$db['test']['dbdriver'] = "mysql";
$db['test']['dbprefix'] = "";
$db['test']['pconnect'] = TRUE;
$db['test']['db_debug'] = FALSE;
$db['test']['cache_on'] = FALSE;
$db['test']['cachedir'] = "";
$db['test']['char_set'] = "utf8";
$db['test']['dbcollat'] = "utf8_general_ci";
그런다음, 설정(config)파일에서 사용하고자는 커넥션셋을 아래변수에 지정해줌으로써 글로벌하게 사용할 수 있게됩니다.:
$active_group = "test";
Note: "test" 는 당신이 원하는데로 지정할 수 있는 이름입니다. 원하는 어떤것이라도 사용하실 수 있습니다. 기본적으로 CodeIgniter 는 "defalut"를 사용합니다.그러나, 그것또한 당신의 프로젝트에 좀더 적합한 이름으로 변경 가능합니다..
액티브 레코드 Active Record
액티브레코드 클래스 는 데이터베이스 설정파일에 있는$active_record 변수를 TRUE혹은 FALSE 로 설정하므로써 글로벌하게 활성혹은 비활성화 시킬수 있습니다.만약 액티브레코드 사용을 FALSE 로 설정하시면 데이터베이스 클래스가 초기화될때 더 적은 시스템리소스를 사용하게 될것입니다.
$active_record = TRUE;
Note: 세션(Sessions) 클래스등 몇몇 클래스는 액티브 레코드가 활성화된 상태에서만 동작합니다.
값 설명(Explanation of Values):
- hostname -데이터베이스 서버이름 입니다. 대체로 "localhost"이죠 .
- username - 사용자아이디
- password - 암호
- database - 연결할데이터베이스
- dbdriver - 데이터베이스 타입 예를들어 mysql, postgres, odcc, etc.반드시 소문자여야함
- dbprefix - 옵션임.액티브레코드 를 사용하여 쿼리할경우 테이블명에 자동으로 접두어를 붙임. 하나의 데이터베이스로 여러개의 CodeIgniter 를 사용할때 유용함.
- pconnect - TRUE/FALSE (boolean) - 영속적연결(persistent connection)을 사용할것인지 말것인지 결정합니다.
- db_debug - TRUE/FALSE (boolean) - 데이터베이스 에러를 표시할지말지를 결정.
- cache_on - TRUE/FALSE (boolean) - 데이터베이스 쿼리를 캐시할것인지 말것인지결정 데이터베이스캐시페이지를 참고할것.
- cachedir - 데이터베이스 쿼리 캐시가 저장될 절대경로.
- char_set - 데이터베이스와 통신할때 사용할 문자셋.
- dbcollat - 데이터베이스와 통신할때 사용되는 문자열 대조법(character collation). 문자열대조 참고자료
- dbcollat - 데이터베이스와 통신할때 사용되는 문자열 대조법(character collation).
문자열대조
참고자료
주의: MySQL 이나 MySQLi 디비사용 시,PHP < 5.2.3 이거나,MySQL < 5.0.7 일때(테이블 생성 을 DB Forge에서 할경우),이 세팅은 단지 백업 용도로만 사용하세요. PHP의 mysql_real_escape_string() 함수에 호환성 문제 때문에 ,멀티바이트 문자셋을 위 버전 이하에서 사용할 경우 사이트가 sql인젝션 공격에 취약하게 됩니다. Latin-1 이나 UTF-8 의경우는 안전합니다.
- port - 데이터베이스 포트번호 .현재는 Postgres 에서만 사용. 이 값을 사용하려면 데이터베이스
설정배열에 아래와같이 추가해야함.
$db['default']['port'] = 5432;
Note: 사용하는 데이터베이스 종류에 따라 (MySQL, Postgres, etc.) 꼭 필요한 설정값들이 달라집니다.(몇몇 설정값은 필요없을수도 있음)예를 들어 ,SQLite를 사용하면 username 이나 password는 필요없습니다.그리고 database name은 데이터베이스 파일의 경로가 될것입니다.위에 기술된 정보는 당신이 MySQL을 사용하고있다고 가정합니다..