apache Derby - 在创建新数据库时获取java.io.FileNotFoundException:derby.log(拒绝访问)

时间:2014-03-03 14:56:47

标签: java apache jdbc derby

我是Apache Derby数据库的新手,

当我尝试使用以下命令创建新数据库时,我遇到了以下问题

C:\>java org.apache.derby.tools.ij
ij version 10.10
ij> connect 'jdbc:derby:Mynewdb;create=true';
Mon Mar 03 20:17:32 IST 2014 Thread[main,5,main] java.io.FileNotFoundException: derby.log
(Access is denied)
----------------------------------------------------------------
Mon Mar 03 20:17:33 IST 2014:
Booting Derby version The Apache Software Foundation - Apache Derby - 10.10.1.1 - (1458268): instance a816c00e-0144-886a-02f2-000000b8d0b0
on database directory C:\Mynewdb with class loader sun.misc.Launcher$AppClassLoader@11b86e7
Loaded from file:/C:/db-derby-10.10.1.1-bin/db-derby-10.10.1.1-bin/lib/derby.jar
java.vendor=Sun Microsystems Inc.
java.runtime.version=1.6.0_23-b05
user.dir=C:\
os.name=Windows 7
os.arch=x86
os.version=6.1
derby.system.home=null
Database Class Loader started - derby.database.classpath=''

2 个答案:

答案 0 :(得分:4)

当您运行ij(或尝试在某些其他应用程序中使用嵌入式Apache Derby)时,将在当前工作目录中创建名为 derby.log 的文件。从帖子开始,您似乎正在从C:\执行此操作,并且您登录的用户没有对该目录的写访问权限:更改为用户有权创建文件的目录重试。

请注意,可以禁止此日志文件(尽管我自己还没有这样做)。见Getting rid of derby.log。但是,抑制日志文件只会导致您的情况再次失败,因为将在文件系统上相对于当前目录创建数据库。也就是说,尝试在当前目录Mynewdb中创建名为C:\的目录也会因同样的原因而失败。可以指定数据库的路径以避免在当前工作目录中创建:

  

IJ> connect'jdbc:derby:/ tmp / test_db; create = true';

答案 1 :(得分:2)

  

user.dir来= C:\

     

os.name = Windows 7

在大多数情况下,Windows 7(及以上版本)不允许您将文件写入根目录。你应该在启动ij之前cd到另一个目录。例如cd \Users\YOUR_USER_NAME你应该好好去。