UcanAccess错误从samba连接读取.MDB数据库

时间:2018-08-03 10:17:04

标签: java ms-access ucanaccess

我正在使用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上的同一应用程序可以正常运行,而无需复制原始数据库即可访问它。

我想念什么吗?

0 个答案:

没有答案