Наиболее очевидной вещью будет отсутствие разрешения на запись в ваш текущий рабочий каталог. Это именно то сообщение об ошибке, которое я получаю в этом случае (очень жаль, что не стоит включать полезную информацию, такую как «отказано в разрешении»)
Если у вас есть доступ к 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)
.