最明显的情况是缺少写入当前工作目录的权限。这是确切的错误消息,我在这种情况下(太糟糕了它不打扰到包括像拒绝“权限”有用的信息)获取
如果你有机会获得strace
,那么你就可以确认这样的:
$ strace -f sqlite3 ex1.db 'create table tb11(one varchar(10), two smallint);' 2>&1 | grep ex1.db
execve("/usr/bin/sqlite3", ["sqlite3", "ex1.db", "create table tb11(one varchar(10"...], [/* 58 vars */]) = 0
access("ex1.db", F_OK) = -1 ENOENT (No such file or directory)
stat("/tmp/d/ex1.db", 0x7fffb18fc690) = -1 ENOENT (No such file or directory)
open("/tmp/d/ex1.db", O_RDWR|O_CREAT, 0644) = -1 EACCES (Permission denied)
open("/tmp/d/ex1.db", O_RDONLY) = -1 ENOENT (No such file or directory)
write(2, "Error: unable to open database \""..., 70Error: unable to open database "ex1.db": unable to open database file
注意open
的结果是EACCESS (Permission denied)
。
多数民众赞成多数民众赞成,因为它太精简提供错误消息 –
@derobert谢谢,我想我想通了。我只是改变了我所在的目录,并且能够创建数据库,因此很可能没有权限。 –