UCanAccess를 사용하여 Access 데이터베이스를 읽으려고합니다.UCanAccess - keepMirror를 사용한 후 Access 데이터베이스에 다시 연결할 수 없습니다.
코드가 작동하지만 데이터베이스가 커져서 속도가 매우 느립니다. 데이터베이스가 거의 변경되지 않기 때문에
Slow initial connection to MS access database에있는 keepMirror
제안을 사용하려고합니다. . 첫 번째 실행에
connection = DriverManager.getConnection(UcanaccessDriver.URL_PREFIX + databaseFile + ";keepMirror=/some/dir/test/resources/db-mirror/mirror");
예외 "주요"java.lang.RuntimeException가 : net.ucanaccess.jdbc.UcanaccessSQLException : UCAExc ::: 3.0.6 오류 스크립트 후속 실행에, 그러나, 나는 다음과 같은 예외를 얻을 파일 라인 : 289 /일부/디렉토리/테스트/자원/DB-거울/거울-783471167 고유 제약은 이미 문에 열 집합에 존재를 [UPDATE CASCADE ON DELETE CASCADE ON 캐시 된 표 < 표 DEF >을 CREATE) ]에서 de.gdfsuezenergie.stromnev.enet.ENETConnector.init (ENETConnector.java:69) at de.gdfsuezenergie.stromnev.Main.setUp (Main.java:374) 에서de.gdfsuezenergie.stromnev.Main.main sun.reflect.NativeMethodAccessorImpl.invoke0 (기본 방법)에서 de.gdfsuezenergie.stromnev.MainTest.main (MainTest.java:9)에서 (Main.java:165) sun.reflect.NativeMethodAccessorImpl.invoke sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)에서 (NativeMethodAccessorImpl.java:62) java.lang.reflect.Method.invoke (Method.java:483)에서의 net.ucanaccess.jdbc.UcanaccessSQLException :에 의한 com.intellij.rt.execution.application.AppMain.main (AppMain.java:144) UCAExc ::: 스크립트 파일 라인 3.0.6 오류 : 289 /일부/dir/test/resources/db-mirror/mirror-783471167 고유 한 제약은 이미 net.ucanaccess.jdbc.UcanaccessDriver.connect (UcanaccessDriver.java:264) 자바에서 에서 [UPDATE CASCADE ON DELETE CASCADE) ON 캐시 된 표 < 표 DEF > 만들기]를 문에 열 집합에 존재합니다. sql.DriverManager.getConnection de.gdfsuezenergie.stromnev.enet.ENETConnector.createConnection (ENETConnector.java:86)에서 java.sql.DriverManager.getConnection (DriverManager.java:270)에서 (DriverManager.java:664)에서 de.gdfsuezenergie.stromnev.enet.ENETConnector.init (ENETConnector.java:57) ... 8 자세한 내용 원인 : java.sql.SQLException : 스크립트 파일의 오류 줄 : 289/some/dir/test/resources/db-mirror/mirror-783471167 UNIQUE제약은 이미 org.hsqldb.jdbc에서 org.hsqldb.jdbc.JDBCUtil.sqlException (알 수없는 소스)에서 [ 캐시 표를 DEF > UPDATE CASCADE ON DELETE CASCADE) ON < 테이블 만들기] 문에 열 집합에 존재 (알 수없는 소스) org.hsqldb.jdbc.JDBCConnection. 원본) 에서 java.sql.DriverManager.getConnection (DriverManager.java:664) 에서 java.sql.DriverManager.getConnection (DriverManager.java:247) net.ucanaccess.jdbc.DBReference.org.hsqldb.HsqlException : getHSQLDBConnection net.ucanaccess.jdbc.UcanaccessDriver.connect (UcanaccessDriver.java:231)에서 (DBReference.java:440) 은 ... 더에 의한 12 오류를 스크립트 파일 라인 : 289/어떤/디렉토리/테스트/자원/DB-거울/거울-783471167 고유 제약은 이미 문에 열 집합에 존재 조직에서 [UPDATE CASCADE ON DELETE CASCADE) ON DEF > 캐시 된 표 < 테이블 만들기]. 에서 org.hsqldb.scriptio.ScriptReaderBase.readAll (알 소스)에 org.hsqldb.scriptio.ScriptReaderText.readDDL (알 소스)에 hsqldb.error.Error.error (알 소스) org.hsqldb.persist.Log .processScript (알 수없는 원본) org.hsqldb.persist.Log.open org.hsqldb.Database에서 org.hsqldb.Database.reopen (알 소스)에 org.hsqldb.persist.Logger.open (알 소스)에서 (알 소스). org.hsqldb.DatabaseManager.getDatabase (Unknown Source) at org.hsqldb.DatabaseManager.newSession (알 수없는 소스) ... 더 많은 것 에 의해 발생했습니다 : org.hsqldb.HsqlException : 이미 UNIQUE 제약 조건 는 org.hsqldb.ParserTable.addTableConstraintDefinitions에서 org.hsqldb.error.Error.error에서 org.hsqldb.error.Error.error (알 소스) (알 소스) (알 소스) 에서 열 집합에 존재 org.hsqldb.StatementSchema.getResult (알려지지 않은 소스)에서 org.hsqldb.Session.executeCompiledStatement에서org.hsqldb.StatementSchema.execute (알 수없는 소스) (알 수없는 소스) ... (28) 더
나는이 때문에이 캐시 테이블에 몇 가지 제약 조건을 위반 이해 , 내가 왜이 스크립트를 실행하는지 이해할 수 없다. 나는 거울을 만드는 모든 점이 어떤 스크립트를 다시 적용 할 필요가 없다고 생각 했는가?
누군가가 거울을 올바르게 읽는 방법을 알고 있습니까?
참고 : => 나는 테이블 정의를 간략하게하기 위해 생략했다.
데이터베이스의 크기가 의심 스럽습니다. 초기 연결이 아닌 큰 테이블을 실제로 쿼리 할 때 문제가 될 수 있습니다.게시 한 링크에서 자신의 질문에 대한 OP의 대답을 읽으면 네트워킹/공유 서버가 문제임을 지적합니다. – Parfait
유선 LAN 네트워크를 사용해야합니다. 그리고 CPU 하드 데스크 드라이브의 데이터베이스로 테스트 속도를 시험해보십시오. 인터넷 폴더 (Dropbox, Google 드라이브, OneDrive 등), 플래시/썸 드라이브 또는 저장 용량이 적은 드라이브에서 데이터베이스를 사용하지 마십시오. – Parfait
해당 테이블의 정의를 확인하여 주 키 인덱스 (Primary = Yes, Unique = Yes) * 및 * 다른 별도 고유 인덱스 (Primary = 예, Unique = Yes)와 같은 주어진 열에 대해 정의 된 둘 이상의 고유 인덱스가 있는지 확인하십시오. 아니오, 고유 = 예). 과거에는'keepMirror '에 문제가 있다는 것을 알았습니다. –