2011-11-30 78 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),然後我能夠創建數據庫。