CI 코드

제목 CI에서 sqlite3 연동하기
글쓴이 한대승(불의회상) 작성시각 2012/04/04 18:11:29
댓글 : 1 추천 : 0 스크랩 : 0 조회수 : 18794   RSS
한대승(불의회상)
sqlite 연동 된다고 나와 있고 system/database 를 열어 보면 sqlite 폴더 밑에 드라이버 와 utility  들이 자리 잡고 있는것으로 보아 테스트는 해보지 않았지만 sqlite  와 sqlite2 는 잘 될것으로 보여 집니다.

파폭 플러그인 SQLite Manager를 사용하면 sqlite3를 베이스로 하여 여러가지 상용DB 프론트엔드 못지 않는 기능들을 사용 가능 합니다.
이번 플젝에 몽고DB를 도입 할 까 고민도 하고 있지만 최근 포스팅 되기 시작한 몽고DB에 대한 성능에 이의를 제기하는 글들이 올라와 망설이고 있는 중 입니다.

각설 하고....

SQLite3를 CI와 연동을 위해 구글링 해보니 떡하고 나오는게...

http://codeigniter.com/wiki/PDO_SQLite3/

명시되어 있는 버젼이 1.7.3이라 긴가 민가 하는 맘으로 시키는 대로 했더니 덜컥 되는군요...
저처럼 sqlite를 ci와 연동해서 테스트 해보고 싶은 분들을 위해 테스트 했던 코드를 올려 드립니다.
일단 붙기만 하면 ci의 액티브레코드를 사용하여 작업이 가능 합니다.

테스트 후 덩치 큰 DB 사용이 예매한 프로젝트는 간단하게 sqlite로 진행 하셔도 될듯 싶습니다.

테스트 환경은 winxp + xampp 입니다.
php.ini를 살펴보니 "php_pdo_sqlite.dll" 이 기본으로 들어가 있었습니다.
다른 OS에도 무리 없이 돌아 가리라 생각합니다.

포스팅한 URL에 가시면 sqlite3 pdo 드라이버를 다운로드 받으실 수 있지만....
작업에 사용했던 드라이버를 압축해서 첨부 합니다.

먼저 system 폴더에 pdo 드라이버를 아래와 같이 복사 하세요.


1.system/database/driver 에 pdo 디렉토리 생성
2.첨부한 zip 압축 푼다.
3."pdo_driver.php"와 "pdo_result.php" 를 system/database/driver/pdo 에 복사 한다.

application/config/database.php 를 아래와 같이 수정 합니다.
$db['default']['hostname'] = '';
$db['default']['username'] = '';
$db['default']['password'] = '';
$db['default']['database'] = 'sqlite:db/sample.sqlite';
$db['default']['dbdriver'] = 'pdo';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
사실 제일 중요한 부분은 

$db['default']['database'] = 'sqlite:db/sample.sqlite';
$db['default']['dbdriver'] = 'pdo';
 
이 두 문장 입니다.

데이타베이스 설정시
db/sample.sqlite 이부분이 실제 sqlite3 파일 입니다.
파폭 플러그인을 쓰시면 쉽게 sqlite DB생성이 가능 합니다.

DB파일의 위치는  index.php 를 기준으로 잡으시면 됩니다.

간단한 테스트용 모델코드 입니다.
<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class test_m extends CI_Model {
 function __construct()
 {
  parent::__construct();
  
  $this->load->database();
 }
 
 function get_all()
 {
  $this->db->from('test');
  return $this->db->get()->result_array();
 }
}

역시 간단한 테스트용 컨트롤로 코드
<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Test_c extends CI_Controller {
 function __construct()
 {
  parent::__construct();
  
  $this->load->model('test_m');
 }
 
 function index()
 {
  $this->output->set_profiler_sections(array('config'  => TRUE, 'queries' => TRUE));
  $this->output->enable_profiler(TRUE);
  
  print_r($this->test_m->get_all());
 }
}

첨부한 압축 파일엔 테스트 할 때 같이 썼던 sqlite3 DB를 같이 첨부 합니다.

CI와 함께 즐거운 코딩 되시길... ^^

첨부파일 sqlite3.zip (6.1 KB)
 다음글 TapBBS 공개합니다~ (9)
 이전글 CodeIgniter SimpleXML library (3)

댓글

도대체 / 2013/02/26 09:29:14 / 추천 0
db파일  경로는 호스트네임에 적는게 아닌가요?