我正在使用UcanAccess(http://ucanaccess.sourceforge.net/site.html)从Java读取.MDB数据库。 该应用程序在Ubuntu服务器上运行,并且正在从Samba连接读取数据库。
在Windows计算机上它可以工作,但是在Linux上我有一些问题。
这里有一些数据:
Url: jdbc:ucanaccess:///mnt/database/TEST.MDB;jackcessOpener=it.plugins.CryptCodecOpener
当我从Access中打开数据库时,需要输入密码。该数据库是从另一个应用程序使用的,实际上我在同一文件夹中看到.ldb
文件。
当我尝试从数据库中读取数据时,出现此异常:
Dataset App.ti 1gg mdb (17) Plugin: TestMdb.jar: net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.5 invalid authorization specification - not found: Admin
at net.ucanaccess.jdbc.UcanaccessDriver.connect(UcanaccessDriver.java:260)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:270)
at it.test.plugins.Testmdb.TestMdb.getConnection(TestMdb.java:120)
at it.test.plugins.Testmdb.TestMdb.testConnessione(TestMdb.java:135)
at it.test.plugins.PluginManager.getAppuntamenti(PluginManager.java:247)
at it.test.plugins.PluginManager$$FastClassBySpringCGLIB$$180b607d.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:720)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:655)
at it.test.plugins.PluginManager$$EnhancerBySpringCGLIB$$ece2d5aa.getAppuntamenti(<generated>)
at it.test.task.AppuntamentiTask.esegui(AppuntamentiTask.java:176)
at sun.reflect.GeneratedMethodAccessor141.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:65)
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.5 invalid authorization specification - not found: Admin
at net.ucanaccess.jdbc.UcanaccessConnection.<init>(UcanaccessConnection.java:110)
at net.ucanaccess.jdbc.UcanaccessDriver.connect(UcanaccessDriver.java:254)
... 28 more
Caused by: java.sql.SQLInvalidAuthorizationSpecException: invalid authorization specification - not found: Admin
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCConnection.<init>(Unknown Source)
at org.hsqldb.jdbc.JDBCDriver.getConnection(Unknown Source)
at org.hsqldb.jdbc.JDBCDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at net.ucanaccess.jdbc.DBReference.getHSQLDBConnection(DBReference.java:440)
at net.ucanaccess.jdbc.UcanaccessConnection.<init>(UcanaccessConnection.java:107)
... 29 more
Caused by: org.hsqldb.HsqlException: invalid authorization specification - not found: Admin
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.rights.UserManager.get(Unknown Source)
at org.hsqldb.rights.UserManager.getUser(Unknown Source)
at org.hsqldb.Database.connect(Unknown Source)
at org.hsqldb.DatabaseManager.newSession(Unknown Source)
... 36 more
但是,如果我执行cp originalDatabase.MDB copiedDatabase.MDB
,并且使用复制的数据库更改UcanAccess网址,则一切正常,无需进行任何更改!
这是我挂载共享的方式:
//192.168.101.100/g/DATABASE /mnt/database cifs user=,password=,gid=1005,uid=1001 0 0
其中1001
是运行我的Java应用程序的用户的uid。
我想指出的是,Windows上的同一应用程序可以正常运行,而无需复制原始数据库即可访问它。
我想念什么吗?