2011-11-30 89 views
0

所以我很新,并试图创建一个数据库使用SQLite(与他们的文档中的说明)。在第一行代码后出现此错误。有谁知道发生了什么事?初学者到sqlite - 无法创建数据库

我在OS X Lion上使用终端。

$ sqlite3 ex1.db 
SQLite version 3.7.5 
Enter ".help" for instructions 
Enter SQL statements terminated with a ";" 
sqlite> create table tb11(one varchar(10), two smallint); 
Error: unable to open database "ex1.db": unable to open database file 

在此先感谢!

回答

2

最明显的情况是缺少写入当前工作目录的权限。这是确切的错误消息,我在这种情况下(太糟糕了它不打扰到包括像拒绝“权限”有用的信息)获取

如果你有机会获得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)

+0

多数民众赞成多数民众赞成,因为它太精简提供错误消息 –

+0

@derobert谢谢,我想我想通了。我只是改变了我所在的目录,并且能够创建数据库,因此很可能没有权限。 –

0

检查您是否有权限的目录中运行此命令。 您需要拥有写权限,其中sqlite将为您的数据库创建一个文件。

如果您没有权限,请尝试通过chmod命令更改权限。 您也可以切换到您的用户配置文件具有写入权限的目录。

我试图在/ usr/bin中创建数据库,它失败了,因为它对我的配置文件没有写权限。但是,当我搬到我的主目录($ HOME),然后我能够创建数据库。