CI 묻고 답하기

제목 CI 3.X 버전 ODBC 연결 방법...
카테고리 CI 2, 3
글쓴이 라산 작성시각 2023/07/26 16:28:21
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 4606   RSS

안녕하세요, CI 3.1.13 , PHP 7.4 / centOS 7.0 으로 웹 사이트를 개발중인데요,

다름이 아니라 config/database.php 파일에서 ODBC를 연결하는 방법에 대해서 여쭙고자 글 남깁니다.

$db['default'] = array(
	'dsn'	=> 'MySQLi://username:password@hostname:3306/database?charset=utf8&DBCollat=utf8_general_ci',
	'hostname' => 'DB서버 주소',
	'username' => 'DB계정',
	'password' => 'DB패스워드',
	'database' => '데이터베이스명명',
	'dbdriver' => 'odbc',
	'dbprefix' => '',
	'pconnect' => FALSE,
	'db_debug' => (ENVIRONMENT !== 'production'),
	'cache_on' => FALSE,
	'cachedir' => '',
	'char_set' => 'utf8',
	'dbcollat' => 'utf8_general_ci',
	'swap_pre' => '',
	'encrypt' => FALSE,
	'compress' => FALSE,
	'stricton' => FALSE,
	'failover' => array(),
	'save_queries' => TRUE,
);

-> odbc_connect(): SQL error: [unixODBC][Driver Manager]Invalid string or buffer length, SQL state S1090 in SQLConnect

$db['default'] = array(
	'dsn'	=> '',
	'hostname' => 'DB서버주소',
	'username' => 'DB계정',
	'password' => '패스워드',
	'database' => '데이터베이스명',
	'dbdriver' => 'odbc',
	'dbprefix' => '',
	'pconnect' => FALSE,
	'db_debug' => (ENVIRONMENT !== 'production'),
	'cache_on' => FALSE,
	'cachedir' => '',
	'char_set' => 'utf8',
	'dbcollat' => 'utf8_general_ci',
	'swap_pre' => '',
	'encrypt' => FALSE,
	'compress' => FALSE,
	'stricton' => FALSE,
	'failover' => array(),
	'save_queries' => TRUE,
);

-> odbc_connect(): SQL error: [unixODBC][Driver Manager]Data source name not found, and no default driver specified, SQL state IM002 in SQLConnect

구글링을 해봐도 odbc 연결 관련 및 해당 오류에 대한 정확한 내용을 찾거나 이해하기가 힘듭니다..

혹시 CI에서 ODBC를 연결하기 위해 제가 어떤 부분을 고쳐야 하는지 알려주실 수 있으실까요??.. 부탁드립니다. 감사합니다

추가적으로 phpinfo()를 통해 현재 서버에 설치된 ODBC 관련 내용 첨부드립니다..

 다음글 CI4 Rest API 인증 문의 (1)
 이전글 CI로 제작한 함수를 GPU로 연산하기 (2)

댓글

변종원(웅파) / 2023/08/10 11:47:39 / 추천 0
dsn 입력했으니 나머지 한글로 된 부분들 지우고 테스트해보세요
라산 / 2023/08/10 13:04:08 / 추천 0

결국 해결했는데요,

웅파님 말씀대로 한글로 입력된 부분들은 지워도 상관이 없고 (dsn에 기재했을 경우)

odbc 가 IBM I Access 여서 해당 드라이버로 연결해줘야 했습니다.

추가적으로 뒤에 CCSID:1208 (UTF-8)을 입력해줘야 데이터들이 한글로 출력되더군요.. 

'dsn'  => 'DRIVER=IBM i Access ODBC Driver;SYSTEM=DB주소;UID=아이디;PWD=비밀번호;database=데이터베이스;CCSID=1208;',