데이터베이스 환경설정 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을 사용하고있다고 가정합니다.