database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
ㆍCUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
CUBRID Q&A 1107 게시물 읽기
No. 1107
Q.[그누보드4] sql명령 부분에서 오류가 납니다.
작성자
몽당연필
작성일
2008-06-07 22:48
조회수
9,414

안녕하세요?

오랜만에 큐브리드용 그누보드와 관련하여 질문글 올립니다.

 

< 운영환경 >

운영체제 : WinXP SP2

큐브리드버전 : 7.1.0.1014

아파치 : 2.2.4

PHP : 5.2.3

그누보드 : 성능개선 큐브리드용 4.21.02

* 설치는 \'오토셋5(베타) 큐브리드 패키지\'로 통합설치 하였습니다.

 

< 문의사항 >

그누보드 게시판의 \'basic\'스킨을 수정하는 도중

여분필드하나(wr_1)를 확장필드로 쪼개어 전화번호를 입력을 받는 작업 후 테스트를 해보니

다음과 같은 오류가 발생하였습니다.

 

- 오류내용 -

 

update g4_write_Order set wr_1 = \'010-2345-6789\' where wr_id = \'101\'

 

-494 : 시멘틱: \'=\' 연산자는 타입 integer 와 char 에서는 사용할 수 없습니다.

 

error file : /aniletter/bbs/write_update.php

 

 

 

Backtrace:

 

file: 1153 - D:\\AutoSet\\public_html\\aniletter\\lib\\common.lib.php

call: backtrace()

 

file: 10 - D:\\AutoSet\\public_html\\aniletter\\skin\\board\\Order\\write_update.skin.php

call: sql_query(\" update g4_write_Order set wr_1 = \'010-2345-6789\' where wr_id = \'101\' \")

 

file: 550 - D:\\AutoSet\\public_html\\aniletter\\bbs\\write_update.php

call: include_once(\"D:\\AutoSet\\public_html\\aniletter\\skin\\board\\Order\\write_update.skin.php\")

 

 

기본스킨에서 코드를 추가한 부분은 다음과 같습니다.

 

- write.skin.php 파일 -

                <?

                $tel1 = explode(\"-\",$write[wr_1]); // 글 수정시 기존 값을 \'-\'기준으로 다시 쪼개어 선택옵션과 입력란에 값을 표시할 수 있게 하기 위함(?)

                $tel1a = $tel1[0];

                $tel1b = $tel1[1];

                $tel1c = $tel1[2];

                ?>

                <select name=\'tel1a\' itemname=\'기본연락처\' required >

                <option value=\'\'>선택</option>

                <option value=\'010\' <? if($tel1a == \"010\") echo \"selected\"; ?>>010</option>

                <option value=\'011\' <? if($tel1a == \"011\") echo \"selected\"; ?>>011</option>

                <option value=\'016\' <? if($tel1a == \"016\") echo \"selected\"; ?>>016</option>

                <option value=\'017\' <? if($tel1a == \"017\") echo \"selected\"; ?>>017</option>

 

                                                            ** 중략 **

 

                <option value=\'063\' <? if($tel1a == \"063\") echo \"selected\"; ?>>063</option>

                <option value=\'064\' <? if($tel1a == \"064\") echo \"selected\"; ?>>064</option>

                <option value=\'070\' <? if($tel1a == \"070\") echo \"selected\"; ?>>070</option>

      </select>

      - <input name=\'tel1b\' type=\'text\' size=\'4\' minlength=\'3\' maxlength=\'4\' itemname=\'기본연락처\' numeric nospace required value=\'<?=$tel1b?>\'>

      - <input name=\'tel1c\' type=\'text\' size=\'4\' minlength=\'4\' maxlength=\'4\' itemname=\'기본연락처\' numeric nospace required value=\'<?=$tel1c?>\'>

 

 

 

 

그리고 글 작성 완료 클릭시 불려지는 파일에

나누어진 확장필드의 값을 하나로 합쳐 DB에 저장시키는 구문

 

- write_update.skin.php 파일 -

 

// 기본연락처 값 입력시키기

$wr_1 = \"$tel1a-$tel1b-$tel1c\";

$sql1 = \" update $write_table set wr_1 = \'$wr_1\' where wr_id = \'$wr_id\' \";

sql_query($sql1);

 

 

 

오류에 나타나는 common.lib.php, write_update.php 파일은 수정한 적이 없습니다.

그누보드 홈페이지 질문답변 게시판과 와 큐브리드 Q&A게시판 및 기술자료

20071220_PHP_CUBRID함수_MySQL함수_비교.pdf 파일이나 CUBIRD 7.1 매뉴얼 등

문서를 찾아보기도 하고 MySQL 버전용 그누보드와 CUBRID용 그누보드를 비교해보기도

하고 네이버 검색도 해보았지만 기초지식이 없는 저로서는 오류를 잡아내지 못하였습니다.

 

수없이 반복되는 테스트 과정중 $wr_1 값에 나누어 입력된 전화번호 값이 입력되는 것까지는

확인 할 수 있었는데요. 그 값을 DB에 입력시키는 SQL구문에서 오류가 나는 듯 합니다.

 

\'=\' 연산자는 타입 integer 와 char 에서는 사용할 수 없습니다

 

라는 오류와 관련하여 이 곳 Q&A게시판을 여러 검색어로 검색해 봤는데 그 중

 

--------------------------------------------------------

[re] sql mode 변경은 어떻게 하나요?  

박근택   2008-05-22 08:57:46, 조회 : 96, 추천 : 6

 

큐브리드는 다른 데이타베이스에 비해서 형변환이나 타입 체크등이 강합니다.

즉 char 변수에 integer값을 입력하게 되면 에러가 발생합니다. 아마 일부 DB는 자동으로 알아서 형변환을 해 주는 것으로 알고 있습니다.

 

큐브리드는 이런 부분이 강화되어 있고 strict mode를 해제하는 방법은 현재 지원되지 않고 있습니다.

 

>strict mode off 하려고 합니다.

--------------------------------------------------------

라는 게시글을 봤습니다.

 

큐브리드 매니저로 클래스 요약정보를 확인해보니 그누보드의 여분필드들은

속성이 character varying(255)더군요.

전화번호가 숫자로만 되어있어서 그런가 했더니 전화번호 값이 아닌 문자로 넣어봐도

마찬가지였구요. 결국 찾은 게시글과는 관련이 없어보이기도 하구요.

 

이 오류 때문에 하루 반나절을 꼬박 소비했습니다. ㅠㅠ

도와주시면 감사하겠습니다.

이 글에 대한 댓글이 총 1건 있습니다.

그누보드는 원래 MySQL로 되어 있는 것으로 알고 있습니다.

그것을 큐브리드로 이용할 수 있도록 포팅한 것으로 알고 있습니다.

만약 확장하여 사용하신다면 자동으로 생성되는 코드가 MySQL에 맞춰져 있지 않나 싶네요.

일단 wr_id의 타입이 문자가 아닌 숫자형 타입이 아닌지 확인을 해 보시기 바랍니다.

만약 숫자형 타입이라면 큐브리드에서는 값을 비교하기 위하여 \'101\' 과 같이 싱글쿼테이션을 사용하시면 에러가 발생합니다. 아마도 MySQL에서는 문제가 없을 겁니다. 즉 wr_id = \'101\'을 wr_id = 101처럼 수정해 보시기 바랍니다.

 

큐브리드는 데이타 타입에 대한 비교가 다른 DB에 비해서 강화되어 있습니다.

한번 확인해 보시고 안되시면 다시 질문 올려 주세요.

 

 

>안녕하세요?

>오랜만에 큐브리드용 그누보드와 관련하여 질문글 올립니다.

>

>< 운영환경 >

>운영체제 : WinXP SP2

>큐브리드버전 : 7.1.0.1014

>아파치 : 2.2.4

>PHP : 5.2.3

>그누보드 : 성능개선 큐브리드용 4.21.02

>* 설치는 \'오토셋5(베타) 큐브리드 패키지\'로 통합설치 하였습니다.

>

>< 문의사항 >

>그누보드 게시판의 \'basic\'스킨을 수정하는 도중

>여분필드하나(wr_1)를 확장필드로 쪼개어 전화번호를 입력을 받는 작업 후 테스트를 해보니

>다음과 같은 오류가 발생하였습니다.

>

>- 오류내용 -

>

>update g4_write_Order set wr_1 = \'010-2345-6789\' where wr_id = \'101\'

>

>-494 : 시멘틱: \'=\' 연산자는 타입 integer 와 char 에서는 사용할 수 없습니다.

>

>error file : /aniletter/bbs/write_update.php

>

>

>

>Backtrace:

>

>file: 1153 - D:\\AutoSet\\public_html\\aniletter\\lib\\common.lib.php

>call: backtrace()

>

>file: 10 - D:\\AutoSet\\public_html\\aniletter\\skin\\board\\Order\\write_update.skin.php

>call: sql_query(\" update g4_write_Order set wr_1 = \'010-2345-6789\' where wr_id = \'101\' \")

>

>file: 550 - D:\\AutoSet\\public_html\\aniletter\\bbs\\write_update.php

>call: include_once(\"D:\\AutoSet\\public_html\\aniletter\\skin\\board\\Order\\write_update.skin.php\")

>

>

>기본스킨에서 코드를 추가한 부분은 다음과 같습니다.

>

>- write.skin.php 파일 -

>                <?

>                $tel1 = explode(\"-\",$write[wr_1]);

>                $tel1a = $tel1[0];

>                $tel1b = $tel1[1];

>                $tel1c = $tel1[2];

>                ?>

>                <select name=\'tel1a\' itemname=\'기본연락처\' required >

>                <option value=\'\'>선택</option>

>                <option value=\'010\' <? if($tel1a == \"010\") echo \"selected\"; ?>>010</option>

>                <option value=\'011\' <? if($tel1a == \"011\") echo \"selected\"; ?>>011</option>

>                <option value=\'016\' <? if($tel1a == \"016\") echo \"selected\"; ?>>016</option>

>                <option value=\'017\' <? if($tel1a == \"017\") echo \"selected\"; ?>>017</option>

>

>                                                            ** 중략 **

>

>                <option value=\'063\' <? if($tel1a == \"063\") echo \"selected\"; ?>>063</option>

>                <option value=\'064\' <? if($tel1a == \"064\") echo \"selected\"; ?>>064</option>

>                <option value=\'070\' <? if($tel1a == \"070\") echo \"selected\"; ?>>070</option>

>      </select>

>      - <input name=\'tel1b\' type=\'text\' size=\'4\' minlength=\'3\' maxlength=\'4\' itemname=\'기본연락처\' numeric nospace required value=\'<?=$tel1b?>\'>

>      - <input name=\'tel1c\' type=\'text\' size=\'4\' minlength=\'4\' maxlength=\'4\' itemname=\'기본연락처\' numeric nospace required value=\'<?=$tel1c?>\'>

>

>

>

>

>그리고 글 작성 완료 클릭시 불려지는 파일에

>나누어진 확장필드의 값을 하나로 합쳐 DB에 저장시키는 구문

>

>- write_update.skin.php 파일 -

>

>// 기본연락처 값 입력시키기

>$wr_1 = \"$tel1a-$tel1b-$tel1c\";

>$sql1 = \" update $write_table set wr_1 = \'$wr_1\' where wr_id = \'$wr_id\' \";

>sql_query($sql1);

>

>

>

>오류에 나타나는 common.lib.php, write_update.php 파일은 수정한 적이 없습니다.

>그누보드 홈페이지 질문답변 게시판과 큐브리드 Q&A게시판 및 기술자료

>20071220_PHP_CUBRID함수_MySQL함수_비교.pdf 파일이나 CUBIRD 7.1 매뉴얼 등

>문서를 찾아보기도 하고 MySQL 버전용 그누보드와 CUBRID용 그누보드를 비교해보기도

>하고 네이버 검색도 해보았지만 기초지식이 없는 저로서는 오류를 잡아내지 못하였습니다.

>

>수없이 반복되는 테스트 과정중 $wr_1 값에 나누어 입력된 전화번호 값이 입력되는 것까지는

>확인 할 수 있었는데요. 그 값을 DB에 입력시키는 SQL구문에서 오류가 나는 듯 합니다.

>

>\'=\' 연산자는 타입 integer 와 char 에서는 사용할 수 없습니다

>

>라는 오류와 관련하여 이 곳 Q&A게시판을 여러 검색어로 검색해 봤는데 그 중

>

>--------------------------------------------------------

>[re] sql mode 변경은 어떻게 하나요?  

>박근택   2008-05-22 08:57:46, 조회 : 96, 추천 : 6

>

>큐브리드는 다른 데이타베이스에 비해서 형변환이나 타입 체크등이 강합니다.

>즉 char 변수에 integer값을 입력하게 되면 에러가 발생합니다. 아마 일부 DB는 자동으로 알아서 형변환을 해 주는 것으로 알고 있습니다.

>

>큐브리드는 이런 부분이 강화되어 있고 strict mode를 해제하는 방법은 현재 지원되지 않고 있습니다.

>

>>strict mode off 하려고 합니다.

>--------------------------------------------------------

>라는 게시글을 봤습니다.

>

>큐브리드 매니저로 클래스 요약정보를 확인해보니 그누보드의 여분필드들은

>속성이 character varying(255)더군요.

>전화번호가 숫자로만 되어있어서 그런가 했더니 전화번호 값이 아닌 문자로 넣어봐도

>마찬가지였구요. 결국 찾은 게시글과는 관련이 없어보이기도 하구요.

>

>이 곳 질문게시판의 큐브리드 버전과 OS선택하면 옆에 그 값이 자동으로 입력되는 것은

>자바스크립트로 하는 것인지는 모르겠으나 비슷한 방법이나 또 다른 어떠한 방법으로

>작성완료 버튼을 누르기 전에 확장된 값을 하나로 모아서 입력하는 것은 없는지...

>

>이 오류 때문에 하루 반나절을 꼬박 소비했습니다. ㅠㅠ

>도와주시면 감사하겠습니다.

 

박근택님이 2008-06-08 22:53에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
1110Q.CPU 50% 잡고 있는 현상의 원인 [1]
전진하는아르고
2008-06-11
6235
1109Q.CPU 가 지속적으로 50% 를 유지합니다. [1]
전진하는아르고
2008-06-10
6322
1108Q.쿼리플랜에서 cost 값 보는 법 자세히 알려주세요... [1]
개발중
2008-06-10
6512
1107Q.[그누보드4] sql명령 부분에서 오류가 납니다. [1]
몽당연필
2008-06-07
9414
1106Q.cubrid 설치후 암호 변경은 어떻게 하나요 ?
학생
2008-06-07
6749
1105Q.Solaris용 7.3 Version Download [2]
테스터
2008-06-05
6603
1104Q.VC++ 2005 에서 컴파일 할때 오류 내용 [1]
Api Classer
2008-06-04
7647
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.049초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다