我正在尝试通过Firebird在我的主目录中创建一个Flamerobin数据库但是我总是得到
*** IBPP::SQLException ***
Context: Database::Create
Message: isc_dsql_execute_immediate failed
SQL Message : -902
Unsuccessful execution caused by a system error that precludes successful execution of subsequent statements
Engine Code : 335544344
Engine Message :
I/O error during "open O_CREAT" operation for file "/home/user/test.fdb"
Error while trying to create file
Permission denied
即使该文件是chmod 777,文件/etc/firebird/2.5/firebird.conf也已被修改,以便:
DatabaseAccess = Full
设置为允许访问所有文件。 该服务正在运行:
$ ps ax | grep fireb
3909 ? S 0:00 /usr/sbin/fbguard -daemon -forever -pidfile /var/run/firebird/2.5/fbserver.pid
尽管很奇怪,netstat找不到连接端口:
netstat | grep 3050
并返回空列表。
如果我连接到现有数据库,则所有工作都可以,例如连接到
/var/lib/firebird/2.5/system/help.fdb
正确显示表格。
答案 0 :(得分:3)
我看到两个可能的原因:
您提到该文件是chmod 777,这意味着该文件已存在,因此创建新数据库将失败。
您正在尝试通过Firebird服务器创建(或连接)用户文件夹中的文件(我假设您的文件)(尽管没有服务器正在运行的事实可能表明情况并非如此)。
我认为Firebird服务器没有在您的帐户下运行(但在firebird用户下),因此不允许访问您文件夹中的文件。
您需要在Firebird用户具有足够访问权限的位置创建(或访问)数据库,或者使用本地(嵌入式)连接(尽管我不确定flamerobin是否支持该数据库。
答案 1 :(得分:3)
你必须做一些事情......首先,让我们看一下安全问题......
在文件/etc/firebird/2.5/firebird.conf
部分:DatabaseAccess必须是这样的:
DatabaseAccess Restrict /the/directory/you/want/to/put/the/database
现在,在文件/etc/firebird/2.5/aliases.conf
你输了一个别名和目录......
diryouwant = /the/directory/you/want/to/put/the/database/database.fdb
保存并重启firebird服务,如:
sudo service firebird-2.5"theversionyouhave" restart
您必须像这样更改目录所有者:
sudo chown firebird.firebird /the/directory/you/want/to/put/the/database
现在你可以毫无困难地使用flamerobin ......
答案 2 :(得分:2)
检查/ home /用户所有者和模式以及firebird进程所有者。我非常确定运行firebird的用户无法访问此目录。
答案 3 :(得分:0)
我有同样的问题,如上所述,在Oracle Linux操作系统中尝试运行firebird 2.5,无法使用gbak恢复任何数据库,同样的错误信息。
搜索之后,我找到了关于目标目录和临时目录的权限的答案
我的解决方案:以root身份:
首先重新运行firebird安装程序以授予安装没有问题;
之后,在/上创建firebird数据库的特定目录(例如,/ fdb),
将备份文件移动到此目录;
使用此命令将整个目录的所有者更改为firebird
chown firebird /fdb -R
chmod 700 firebird /fdb -R
在此之后,gbak通常适合我,以root身份运行。
参考:http://forums.devshed.com/firebird-sql-development-61/gbak-restore-linux-453690.html