Background Image

FORUM

조회 수 220 추천 수 0 댓글 9
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄


* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.

OS
Window11 64bit
CUBRID Ver.
11
CUBRID TOOL Ver.
디비버
응용 환경(API)
java


* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.

 

에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
큐브리드도 

 

ResultSet rs = this._dmd.getTables(null, "%", "%", asTypes);

    String sTableSchema = rs.getString("TABLE_SCHEM");
    String sTableName = rs.getString("TABLE_NAME");
    String sTableType = rs.getString("TABLE_TYPE");     
    String sRemarks = rs.getString("REMARKS");

 

위와 같은 식으로 테이블 정보를 알 수 있다고 매뉴얼에서 본 듯 한데요

보통 위와 같은 코드를 추가해서 저 값들을 가져오면 REMARKS = 테이블별로 사용자가 추가한 DESCRIPTION 정보가 맵핑됩니다.

 

그러나 큐브리드는 DDL이 통째로 맵핑되더군요? 오류의 일종인가요? 그게 아니라면 이유가 있을까요?

 

  • ?
    황영진 2024.12.20 19:52
    큐브리드 11버전에서 테스트 해본 결과 테이블 DESCRIPTION 정보가 정상적으로 출력됩니다.
    DESCRIPTION 내용은 정상적으로 입력이 되신걸까요? 아래 쿼리로 확인해보시기 바랍니다.
    SELECT class_name, comment FROM db_class; // 전체 테이블 주석 정보 조회
  • ?
    갓파킹 2024.12.20 22:44
    알려주신 것과 같은 쿼리로 디비버 sql 스크립트에서 실행했을 땐 바로 찾았습니다만, 자바fx로 서버에서 쿼리가 아닌 ResultSet rs = this._dmd.getTables(null, "%", "%", asTypes); 으로 String sRemarks = rs.getString("REMARKS"); 을 갖고 오자 description에 해당 테이블을 생성하는 DDL이 세팅되더군요 다른 DB들은 정상적으로 DESCRIPTION을 갖고 왔는데 큐브리드만 DDL을 가져왔습니다 이유가 무엇일까요? rs.getString("???") 저 물음표 안에 뭘 넣어야 DESCRIPTION만 딱 가져올 수 있을까요?
  • ?
    갓파킹 2024.12.23 00:43
    .getStrng("") 으로 "" 안에 columnlabel로 REMARKS를 찾으면 보통은 테이블에 설정해놓은 description 즉 ddl로 치면 COMMENT='description 내용' 이 부분에 해당하는 데이터를 가져오는데 큐브리드에 한해서는 그냥 ddl이 통째로 가져와지더군요 이유가 무엇인지 궁금하고, 저 ddl 상의 comment 부분을 가져오기 위해서는 어떤 기능을 써야 하는지 궁금합니다. 혹시 큐브리드의 경우 getString("컬럼라벨명")이 아닌 다른 걸 써야 할까요?
  • ?
    hwanyseo 2024.12.23 09:02
    확인 결과
    getTables시 아래와 같은 columnLables 또는 columnIndex 입력하시는게 맞습니다.
    큐브리드 11버전 windows, linux 버전에서 위에 예제를 테스트 했을 경우 모두 정상적으로 REMARKS 정보를 가져오고 있습니다.
    DDL이 통째로 맵핑되거나 가져와 진다는게 어떤 결과가 getString에 리턴 되는지 알려주실 수 있을까요?

    예제는 아래와 같습니다.
    String[] getTableColumnLabels = {"TABLE_CAT", "TABLE_SCHEM", "TABLE_NAME", "TABLE_TYPE", "REMARKS"};

    ResultSet tables = metadata.getTables(null, "%", "%", new String[] {"TABLE"});
    while (tables.next()) {
    for (int i = 0; i < getTableColumnLabels.length; i++) {
    System.out.println("getTableColumnLabels " + getTableColumnLabels[i] + " : " + tables.getString(getTableColumnLabels[i]));
    }

    int cols = rsmd.getColumnCount();
    for (int j = 1; j <= cols; j++) {
    System.out.println("getTableColumnLabels count " + j + " : " + tables.getString(j));
    }
    }

    [결과]
    getTableColumnLabels TABLE_CAT : null
    getTableColumnLabels TABLE_SCHEM : null
    getTableColumnLabels TABLE_NAME : athlete
    getTableColumnLabels TABLE_TYPE : TABLE
    getTableColumnLabels REMARKS : athlete comment
    getTableColumnLabels count 1 : null
    getTableColumnLabels count 2 : null
    getTableColumnLabels count 3 : athlete
    getTableColumnLabels count 4 : TABLE
    getTableColumnLabels count 5 : athlete comment


    ...
  • ?
    갓파킹 2024.12.23 09:14
    ResultSet rs = this._dmd.getTables(null, "%", "%", asTypes); String sRemarks = rs.getString("REMARKS"); 이렇게 했을 때 sRemarks 값을 콘솔 로그로 찍으면
    CREATE TABLE [cubrid003] ([id] INTEGER NOT NULL, [column1] CHARACTER VARYING(100), [column2] NUMERIC(15,0), [column3] CLOB, [column4] DATE, CONSTRAINT [cubrid003_pk] PRIMARY KEY ([id])) REUSE_OID, COLLATE utf8_bin;
    이게 통째로 들어옵니다
  • ?
    hwanyseo 2024.12.23 09:23
    JDBC 코드 확인도 해보았으나 JDBC에서는 getTables에서 Remarks 정보에 DDL을 추가해서 보내주지 않습니다.
    예제 코드를 보시면 알겠지만 입력된 COMMENT가 정상적으로 리턴 됩니다.

    혹시 Description에 DDL 정보가 들어 있는 것은 아닌지요?
    sRemarks 변수를 콘솔로그로 정확히 출력한 것은 맞는지? sRemarks 변수에 또 다른 정보를 넣고 있는지 확인이 필요합니다.
    현재 저희는 재현되지 않고 정상적으로 동작되고 있습니다.
  • ?
    갓파킹 2024.12.23 10:38
    description에 ddl 정보가 들어있는지 여부는 모르겠습니다. 디비버의 Properties - 테이블 설명란에 문구를 적어넣었고 다른 db의 경우 해당 설명란에 저장한 문구가 REMARKS로 뜬 것과 달리 큐브리드는 그러하지 않고, 상단에 보여드린 ResultSet rs = this._dmd.getTables(null, "%", "%", asTypes); String sRemarks = rs.getString("REMARKS"); 이 코드를 시스템 콘솔로 찍어보면
    sRemarks : CREATE TABLE [db_serial] ([unique_name] CHARACTER VARYING(1073741823) NOT NULL, [name] CHARACTER VARYING(1073741823), [owner] [db_user], [current_val] NUMERIC(38,0) DEFAULT 1 NOT NULL, [increment_val] NUMERIC(38,0) DEFAULT 1 NOT NULL, [max_val] NUMERIC(38,0) NOT NULL, [min_val] NUMERIC(38,0) NOT NULL, [cyclic] INTEGER DEFAULT 0, [started] INTEGER DEFAULT 0, [class_name] CHARACTER VARYING(1073741823), [att_name] CHARACTER VARYING(1073741823), [cached_num] INTEGER DEFAULT 0, [comment] CHARACTER VARYING(1024), CONSTRAINT [pk_db_serial_unique_name] PRIMARY KEY ([unique_name]), CONSTRAINT [u_db_serial_name_owner] UNIQUE KEY ([name], [owner])) DONT_REUSE_OID, COLLATE utf8_bin METHOD CLASS [change_serial_owner]() FUNCTION [au_change_serial_owner_method];
    sRemarks : CREATE TABLE [cubrid001] ([id] INTEGER NOT NULL, [col_varchar] CHARACTER VARYING(100), [col_clob] CLOB, [col_blob] BLOB, [col_date] DATE, [clob2] CLOB, CONSTRAINT [cubrid001_pk] PRIMARY KEY ([id])) REUSE_OID, COLLATE utf8_bin COMMENT='cubrid001입니다 안녕하세요?';
    sRemarks : CREATE TABLE [cubrid002] ([id] INTEGER NOT NULL, [column1] CHARACTER VARYING(100), CONSTRAINT [cubrid002_pk] PRIMARY KEY ([id])) REUSE_OID, COLLATE utf8_bin;
    sRemarks : CREATE TABLE [cubrid_sample_table] ([id] INTEGER AUTO_INCREMENT (1, 1) NOT NULL, [name] CHARACTER VARYING(100), [age] SMALLINT, [salary] NUMERIC(12,2), [created_date] DATE, [created_time] TIME, [created_datetime] DATETIME, [created_timestamp] TIMESTAMP DEFAULT CURRENT_TIMESTAMP, [is_active] CHARACTER(1), [description] CHARACTER VARYING(1073741823), [short_description] CHARACTER(50), [large_text] CLOB, [binary_data] BLOB, [medium_binary_data] BIT VARYING(1000), [latitude] FLOAT, [longitude] DOUBLE, [json_data] JSON, CONSTRAINT [pk_cubrid_sample_table_id] PRIMARY KEY ([id])) REUSE_OID, COLLATE utf8_bin;
    이런 식으로 출력이 되었습니다.
  • ?
    hwanyseo 2024.12.23 11:44
    DBeaver에서 comment를 입력하고 위에 테스트 코드를 돌려도 동일하게 정상적으로 출력됩니다.
    나온 결과가 꼭 show create table 'table명'과 흡사하네요.
    this._dmd가 java.sql.DatabaseMetaData가 맞나요? getTables에서 가공하고 있지 않은가요?
    위에 자바코드를 돌려도 동일한 결과가 표시되는지 확인 후에 사용하시는 코드를 확인해야 할 것으로 판단됩니다.
  • ?
    갓파킹 2024.12.23 12:29
    protected DatabaseMetaData _dmd = null;
    ResultSet rs = this._dmd.getTables(null, "%", "%", asTypes);
    rs = this._dmd.getTables(null, "%", "%", asTypes);
    이러합니다. DatabaseMetaData.java에서는 ResultSet getTables(String catalog, String schemaPattern,
    String tableNamePattern, String types[]) throws SQLException; 이렇게 되어 있는데 가공이 되어 있는 걸까요? 이미 다른 사람이 만들어둔 코드를 보고 있는 터라 자세한 파악이 어려워 죄송합니다.

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 8 update admin 2024.04.23 15076
18 c드라이브에 ces_숫자 폴더 1 갓파킹 2024.12.13 205
17 데이터베이스이름.스키마.테이블 쿼리에 대해 1 갓파킹 2024.12.13 236
16 오류확인요청드립니다. 1 roh 2024.12.16 202
15 ssl 인증서 오류 3 file mots 2024.12.16 217
14 Cannot connect to a broker 오류 문의드립니다. 3 file info_Ss 2024.12.16 262
13 cubrid 11.2 설치시 오류 2 file 시나브로 2024.12.17 186
12 ROWNUM 함수에 대해서 질문드립니다. 1 홍길동12 2024.12.18 158
» 큐브리드의 ResultSet의 REMARKS 9 갓파킹 2024.12.20 220
10 cubrid user 와 데이터베이스 참조 오류? 3 갓파킹 2024.12.24 173
9 CREATE OR REPLACE 1 갓파킹 2024.12.26 123
8 수행한 SQL 성능 이력 확인 방법 3 ijuru 2024.12.30 128
7 Cubrid Manager Server 관련 OOM이 발생하는 버전 정보를 추가 확인 요청드립니다. 3 newkr 2024.12.30 95
6 cubrid.jdbc.driver.CUBRIDException: Cannot allocate query entry any more. Maximum allocatable entries are 100 ith 2025.01.06 84
5 plandump api 질문 드립니다 1 잘했어요 2025.01.06 64
4 CentOS7.x EOS에 따른 Rocky 8.10으로 CUBRID 마이그레이션 관련 문의드립니다. 1 닉네임없음 2025.01.09 66
3 cubrid loaddb 관련 질의 드립니다.(내용수정->해결되었습니다.) 아저씨1212 2025.01.16 19
2 테이블 생성 시, 컬럼명으로 value, domain 등 예약어? 사용 불가? 해결방법 아저씨1212 2025.01.20 2
1 성능 데이터 수집을 위한 방법 문의 드립니다. new 양념생막창 2025.01.22 2
Board Pagination Prev 1 ... 199 200 201 202 203 204 205 206 207 208 Next
/ 208

Contact Cubrid

영업문의 070-4077-2112 / 기술문의 070-4077-2145 / 대표전화 070-4077-2110 / Email. contact_at_cubrid.com
Contact Sales