权限被拒绝在OSX中创建firebird嵌入式数据库时出错

Mar*_*tin 5 macos firebird

首先,我不是100%确定我在OSX下使用嵌入式firebird客户端.我从firebirdsql.org下载的安装文件表明它包含Classic,Superclassic和Embedded.与Windows版本不同,包中似乎没有专用的嵌入式库文件.我假设libfbclient.dylib(重命名libgds.dylib为我使用)可以用作嵌入式.如果我错了,我想这就是问题所在.有人能告诉我在哪里获得嵌入式dylib文件吗?

如果libfbclient.dylib也是嵌入式使用,那么我的问题仍然存在.当我第一次尝试创建数据库文件时,它失败并显示"权限被拒绝".我试图在用户文档文件夹中创建此文件.我正在使用Delphi中的Interbase Express组件进行连接.在Windows环境下,这已经很好地服务了我多年.

完整的错误消息是......
Exception class EIBInterBaseError with message 'I/O error during "open O_CREAT" operation for file '/Users/martin/Documents/LightFactoryShows/default.fdb" Error while trying to create file Permission denied'

Mar*_*tin 2

解决了!多次重新阅读该文档后,我终于明白了: http://www.ibphoenix.com/resources/documents/how_to/doc_103

OSX下的嵌入式库与Windows中的exe相同。在 /Library/Framworks/Firebird.framework 文件夹中有一个名为“Firebird”的可执行文件。我不明白的关键文本是“将 Firebird 文件重命名为 libfbembed.dylib”。我的 Windows 经验让我很困惑,因为在 Windows 中你永远不会将 .exe 重命名为 .dll。我不知道它在 Windows 中是否可能,但我从来没有聚集过它。

我还需要做一些琐碎的事情,所以这里是完整的说明。

1) 将“Firebird”{executable}链接到/usr/local/lib/libgds.dylib

ln -s /Library/Frameworks/Firebird.framework/Firebird /usr/local/lib/libgds.dylib
Run Code Online (Sandbox Code Playgroud)

2) 链接 firebird.msg 文件,使其出现在 /usr/local/lib 文件夹中

ln -s /Library/Frameworks/Firebird.framework/Versions/A/Resources/English.lproj/var/firebird.msg /usr/local/lib/firebird.msg
Run Code Online (Sandbox Code Playgroud)

3) 将“security2.fdb”复制到/usr/local/lib 文件夹并更改其权限以授予写入权限。无法建立到该文件的链接。

cp /Library/Frameworks/Firebird.framework/Versions/A/Resources/English.lproj/var/security2.fdb /usr/local/lib
chmod 777 /usr/local/lib/security2.fdb.
Run Code Online (Sandbox Code Playgroud)