2012-06-19 3 views
3

의 열 설치를없는 것으로보고있다 실패, 데이터베이스에서 읽는 오류 반환 :기존 DB2 열은 사용자를 삭제, DB2에서 실행되는 무 2에서 테이블

디버그 정보 : [IBM을 ] [CLI 드라이버] [DB2/LINUXX8664] SQL0206N "USERIDFROM"은 사용 된 컨텍스트에서 유효하지 않습니다. SQLSTATE = 42703 SQLCODE = -206 SELECT * FROM mdl_message 여기서 useridfrom =? 어떤 다른

$ db2 describe table mdl_message 

          Data type      Column 
Column name    schema Data type name  Length  Scale Nulls 
------------------------- --------- ------------------- ---------- ----- ------ 
 ID      SYSIBM BIGINT      8  0 No  
 USERIDFROM    SYSIBM BIGINT      8  0 No  
 USERIDTO     SYSIBM BIGINT      8  0 No  
 SUBJECT     SYSIBM VARCHAR     200  0 Yes 
 FULLMESSAGE    SYSIBM VARCHAR     200  0 Yes 
 FULLMESSAGEFORMAT  SYSIBM SMALLINT      2  0 Yes 
 FULLMESSAGEHTML   SYSIBM VARCHAR     100  0 Yes 
 SMALLMESSAGE    SYSIBM VARCHAR     200  0 Yes 
 NOTIFICATION    SYSIBM SMALLINT      2  0 Yes 
 CONTEXTURL    SYSIBM VARCHAR     200  0 Yes 
 CONTEXTURLNAME   SYSIBM VARCHAR     200  0 Yes 
 TIMECREATED    SYSIBM BIGINT      8  0 No  

    12 record(s) selected. 

: ORDER BY는
[어레이 ( 0 => '28521' )]

SQL0206N 대한 오류 설명 명확

하지만 useridfrommdl_message 컬럼이다 timecreated 이 오류가 발생할 수 있습니까?

+1

오류 메시지가 표시되면 사용중인 WHERE 절이 무엇인지 명확하지 않습니다. 너는 그걸 잊어 버렸어? – Kreg

+0

그게 이상한 오류입니다, 거기 테이블이나 무언가에 방아쇠가 있습니까? 또는 대소 문자를 구분할 수있는 방법이 있습니까? 실수로 '1'(1) 또는 'l'(ell) 또는 유사하지 않습니까? 그 외에도,'TIMECREATED'는 DB2가 시간 소인 정보를 시간 소인에 저장하지 않는다는 사실을 알아 내기 위해 신시대 (UTC) 이후의 밀리 초 (또는 나노) 초입니다. –

+0

오류 메시지를 기반으로 큰 정수 대신 USERIDFROM에 대한 DB2에 물음표가 전달 된 것 같습니다. –

답변

6

열 이름에 아무 래도 공백이있을 수 있습니다. 이 쿼리를 사용하여 뒤 공백이 있는지 확인할 수 있습니다.

db2 "select '<' || name || '>' from sysibm.syscolumns where tbname = 'MDL_MESSAGE'" 
+1

좋은 캐치 :'', 감사합니다! –

+0

빠른 질문 하나, "sysibm.syscolumns"에서 열을 검사 할 때 열 무리가 있지만 "select * from t_name"을 할 때 해당 열을 볼 수 없습니다. 위의 sysibm 열에 표시된 열의 하위 집합입니다. . 기둥에 변형이있는 이유를 이해하는 데 도움이 필요하십니까? –

0

명령 줄과 CLI에서 동일한 사용자로 연결 하시겠습니까? 같은 테이블에 다른 스키마가 있고 다른 테이블에 대한 설명을보고 있지만 다른 테이블에 액세스하는 경우가있을 수 있습니다.

+0

예, 동일합니다. –