데이터베이스 환경설정 Database Configuration¶
CodeIgniter 는 데이터베이스 설정(username, password, 데이터베이스 이름 등)을 저장하는 설정파일을 제공합니다. 설정파일은 application/config/database.php 에 있습니다. 또한 database.php의 값을 배치하여 특정 환경(environments)에 대한 데이터베이스 연결 값을 설정할 수 있습니다. 그것은 각각의 환셩 설정 폴더입니다.
설정은 다차원배열로 아래 예제처럼 저장됩니다:
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'database_name',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => TRUE,
'db_debug' => TRUE,
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array()
);
어떤 데이터베이스 드라이버 (PDO, PostgreSQL, Oracle, ODBC 와 같은) 는 전체 DSN 문자열을 제공해야할 수도 있습니다. 이런 경우, 만약 기본 PHP 익스텐션을 이용한 드라이버를 사용한다면, dsn 환경설정을 사용해야 합니다. 예제:
// PDO
$db['default']['dsn'] = 'pgsql:host=localhost;port=5432;dbname=database_name';
// Oracle
$db['default']['dsn'] = '//localhost/XE';
Note
만약에 드라이버에서 필요로 하는 DSN 문자를 지정하지 않으면, CodeIgniter 는 제공된 설정의 나머지를 구축하려고 합니다.
Note
DNS 문자열을 제공하고, 유효한 세팅(데이터베이스 캐릭터 세팅같은)이 비어있을 경우, 코드이그나이터는 이를 추가합니다.
주요 연결이 어떤 이유로 연결할 수없는 경우에도 상황에 대한 장애 조치를 지정할 수 있습니다. 이 장애 조치는이 같은 연결에 대한 장애 조치를 설정하여 지정할 수 있습니다:
$db['default']['failover'] = array(
array(
'hostname' => 'localhost1',
'username' => '',
'password' => '',
'database' => '',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => TRUE,
'db_debug' => TRUE,
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE
),
array(
'hostname' => 'localhost2',
'username' => '',
'password' => '',
'database' => '',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => TRUE,
'db_debug' => TRUE,
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE
)
);
여러분이 원하시는대로 페일오버 조치를 취할 수 있습니다.
단순한배열 대신 다차원배열을 사용하는 이유는 선택적으로 여러 개의 커넥션셋을 쉽게 사용하도록 하기 위해서 입니다. 예를 들어, 당신이 하나의 CoideIgniter 설치로 개발, 라이브, 테스트 등 여러가지 환경에서 작업한다고 했을 때, 여러 개의 커넥션셋을 설정해 둔 다음 각 환경에 맞는 커넥션셋으로 각각 전환할 수 있습니다. 예를 들어 “test” 환경에 대한 정보를 다음과 같이 설정합니다:
$db['test'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'database_name',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => TRUE,
'db_debug' => TRUE,
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'compress' => FALSE,
'encrypt' => FALSE,
'stricton' => FALSE,
'failover' => array()
);
그런 다음, 설정(config) 파일에서 사용하고자 하는 커넥션 셋을 아래 변수에 지정해줌으로써 글로벌하게 사용할 수 있게 됩니다:
$active_group = 'test';
Note
‘test’ 는 당신이 원하는대로 지정할 수 있는 이름입니다. 원하는 어떤 것이라도 사용하실 수 있습니다. 기본적으로 CodeIgniter 는 “default” 를 사용합니다. 그러나, 그것 또한 당신의 프로젝트에 좀 더 적합한 이름으로 변경 가능합니다.
쿼리 생성 Query Builder¶
쿼리(Query) 생성 클래스는 데이터베이스 config 파일에서 $query_builder의 값을 TRUE/FALSE 로 지정하여 전역적으로 사용, 또는 해제할 수 있습니다. 기본 세팅은 TRUE 입니다. 쿼리 빌더 클래스를 사용하지 않는다면, 세팅을 FALSE 로 바꿔 데이터베이스 클래스가 초기화될 때 리소스를 줄일 수 있습니다.
$query_builder = TRUE;
Note
세션(Sessions) 클래스등 몇몇 클래스는 액티브 레코드가 활성화된 상태에서만 동작합니다.
값 설명 Explanation of Values:¶
환경값 | 설명 |
---|---|
dsn | DSN 연결 문자 |
hostname | 데이터베이스 서버이름 입니다. 대체로 ‘localhost’ 입니다. |
username | 데이터베이스 사용자 아이디. |
password | 데이터베이스 사용자 패스워드. |
database | 연결하고자 하는 데이터베이스 이름. |
dbdriver | 데이터베이스 타입, 예를 들어 mysqli, postgre, odbc, etc. 반드시 소문자여야 함. |
dbprefix | 옵션임, Query Builder 를 사용하여 쿼리할 경우 테이블명에 자동으로 접두어를 붙임. 하나의 데이터베이스로 여러 개의 CodeIgniter 를 사용할 때 유용함. |
pconnect | TRUE/FALSE (boolean) - 영속적연결(persistent connection)을 사용할 것인지 말것인지 결정합니다. |
db_debug | TRUE/FALSE (boolean) - 데이터베이스 에러를 표시할지 말지를 결정. |
cache_on | TRUE/FALSE (boolean) - 데이터베이스 쿼리를 캐시할 것인지 말 것인지결정 데이터베이스캐싱 클래스(Database Caching Class)페이지를 참고할 것. |
cachedir | 데이터베이스 쿼리 캐시가 저장될 절대경로. |
char_set | 데이터베이스와 통신할 때 사용할 문자셋. |
dbcollat | 데이터베이스와 통신할 때 사용되는 문자열 대조법(character collation) Note ‘mysql’ 과 ‘mysqli’ 드라이버에서만 사용됩니다. |
swap_pre | 기본 테이블 접두어가 dbprefix 에서 교체됩니다 수동으로 작성된 쿼리를 실행하고, 최종 사용자에 의해 변환될 때 접두어가 여전히 필요할 때 유용합니다. |
schema | 데이터베이스 스키마, ‘public’ 이 기본. PostgreSQL 및 ODBC 드라이버에서 사용. |
encrypt | 암호화 연결을 사용할지 결정. |
compress | 클라이언트 압축을 사용할지 결정, (MySQL 전용). |
stricton | TRUE/FALSE (boolean) - “스트릭트 모드” 연결을 강제로 사용할지. 어플리케이션을 개발하는 동안 엄격한 SQL 을 보장하기 위해 좋습니다. |
port | 데이터베이스 포트 번호. 이 값을 사용하기 위해서는 config에 한 줄을 추가해야 합니다. $db['default']['port'] = 5432;
|
Note
사용하는 데이터베이스 종류에 따라 (MySQL, Postgres, etc.) 꼭 필요한 설정값들이 달라집니다.(몇몇 설정값은 필요없을 수도 있음) 예를 들어, SQLite를 사용하면 username 이나 password는 필요없습니다. 그리고 database name은 데이터베이스 파일의 경로가 될것입니다. 위에 기술된 정보는 당신이 MySQL을 사용하고있다고 가정합니다.