2016-08-12 8 views
1

JTOpen 9.1 드라이버를 통한 JDBC 연결을 Netbeans 8.1이있는 i 용 DB2에 사용하는 경우 Netbeans IDE의 데이터베이스 결과 탐색기가 CrUD 작업을 비활성화하고 "SQL 'CrUD'작업 표시"하는 이유를 알고 계십니까?Netbeans 8.1 데이터베이스 결과가 DB2 데이터베이스에서 JTOpen을 사용할 때 CrUD 또는 "Show SQL"작업을 허용하지 않는 이유는 무엇입니까?

JTOpen은 IBM i 시스템과 상호 작용하기위한 Java 클래스 묶음 외에 IBM i DB2 for i 데이터베이스에 대한 오픈 소스 JDBC 드라이버입니다.

http://jt400.sourceforge.net/

Screenshot of missing insert CrUD operations and Show SQL Scripts 나는 몇 JDBC 연결 속성하지만 시가 ... 나는 내가 IBM KB http://www.ibm.com/support/knowledgecenter/ssw_ibm_i_71/rzahh/jdbcproperties.htm

과 JT400을 찾아 계속해야 겠네요 Tried a few different JDBC connection properties

시도 소스 https://github.com/devjunix/libjt400-java/blob/master/src/com/ibm/as400/access/JDProperties.java

답변

2

내 문제를 해결 한 연결 속성에 "extended metadata = true"를 추가하십시오.

https://godzillai5.wordpress.com/2016/08/21/jdbc-jt400-setting-to-get-crud-and-show-sql-features-added-in-netbeans-with-ibm-db2-for-i/

여기에 IBM 문서 http://www.ibm.com/support/knowledgecenter/ssw_ibm_i_71/rzahh/jdbcproperties.htm

"확장 메타 데이터"
지정 서버에서 메타 데이터를 확장 드라이버가 요청하는 여부. 진정한 증가에 다음 ResultSetMetaData에 방법에서 반환 된 정보의 정확성이 속성을 설정 : getColumnLabel을 (INT) isReadOnly의 (INT) isSearchable (int)를 isWriteable (int)를 분명히 읽기 전용 결과 집합 잘못 때문이다

ext. 메타 데이터는 isReadOnly (int)의 실제 값으로 돌아옵니다. 나는 초기 연결에서 연결 속성 "읽기 전용"이 true이기 때문에 false로 가정합니다. 시스템 또는 라이브러리/스키마가 해당 속성을 갖는 연결을 설정하는 설정을 이해하는 것이 도움이됩니다.

2

많은 DB2 for i 시스템은 conf입니다. 이 아닌은 확약 제어 또는 저널링을 사용합니다. 이것은 많은 툴킷이 기대하는 것이 아닙니다. 연결 문자열을 변경하여 Netbeans에 확약 제어를 원하지 않는다고 알려주십시오.

+0

나는 여기 몇 가지를 시도했다 : http://i.imgur.com/LbSlvex.png하지만 시가는 없다. – PHPDave

+0

그것은 공공 기계이기 때문에 직접 데이터베이스를 생성해야한다. 당신은 그렇게 않았다 방법? CRTLIB, CRTPF 인 경우 기본값은 저널링이 없습니다. CREATE SCHEMA, CREATE TABLE 인 경우 기본값은 해당 스키마의 테이블을 저널링하는 것입니다. 기억이 나지 않으면 녹색 화면을 시작하고 DSPFD를 사용하십시오.또는 새 스키마와 새 테이블을 만들고 이에 대해 테스트하십시오. 또는 STRJRNPF를 갱신하려는 테이블에서. 나는 저널링이 문제이지만, 그 가설을 확인하거나 테스트하는 것이 어렵지 않을 것이라고/모르겠다. –

+0

CREATE TABLE sql 문을 실행했습니다. 저널을 추가했지만 실행 중입니다. "CPF9803 : 라이브러리 PHP_DAVE1에서 MYTABLE 개체를 할당 할 수 없습니다." https://gist.github.com/phpdave/124d5814121243555ad1dfb08054e435 – PHPDave

1

일부 읽기 전용 작업이 표시된 원본 이미지의 가장 분명한 이유는 연결에 대한 "액세스"속성 인 것 같습니다. 즉 "읽기 전용"으로 설정하면 SELECT 문에 대한 액세스 만 제한됩니다. 그러나 연결 속성을 보여주는 새로운 정보로 인해 "액세스"속성이 문제의 근원이 아니어야하므로 readOnly = false로 보입니다.
주어진 TABLE에 대해 PRIMARY KEY CONSTRAINT가 부족한 것으로 의심됩니다. 즉 IIRC를 사용하는 경우, 일부 클라이언트 데이터베이스 응용 프로그램은 특정 TABLE에 대한 갱신 가능 모드를 막을 수 있습니다 (해당 테이블에 PK가없는 것으로 알려진 경우).

+0

기본 키를 추가하고 가져 왔습니다. 오류 코드 -7008, SQL 상태 55019 : [SQL7008] PHP_DAVE1의 MYTABLE2가 작동에 유효하지 않습니다. 원인 . . . . . : 이유 코드는 3입니다. 3 - MYTABLE2가 저널되지 않았거나, 저널에 대한 권한이 없거나, 저널 상태가 * STANDBY입니다. 저널링에 대해 Buck이 말한 것 같습니다 – PHPDave

+0

예, msg SQL7008의 RC3은 저널링 부족으로 인해 시도 된 작업을 허용하지 않습니다. 보통, 테이블에 대해 일부 I/O 시도가있을 때 * NONE이 아닌 분리 레벨 [확약 제어 레벨]입니다. 표시된 연결 속성은 문제가되지 않는다고 제안하는 것 같습니다. 그러나 클라이언트가 PK를 요구할 수있는 것처럼 원래 설정된 연결 속성과 관계없이 클라이언트가 * NONE 이외의 SET ISOLATION LEVEL을 설정할 수도 있습니다. – CRPence

+0

테스트 한 결과 기본 키가 필요하지 않았기 때문에 확장 메타 데이터 연결 속성이 필요했습니다. 도움을 주셔서 감사합니다. https://godzillai5.files.wordpress.com/2016/08/screen-shot-2016-08-21-at-5-28-pm.png?w=1250 – PHPDave