我正在尝试设置一个本地firebird实例进行测试,但无法使用ISQL连接到它。我试着按照这里的快速入门指南:
CONNECT ..examplesempbuildemployee.fdb user SYSDBA password masterkey;
结果是:
Statement failed, SQLSTATE = 08001
unavailable database
经过一些搜索,我尝试将其修改为:
CONNECT "localhost:C:Program FilesFirebirdFirebird_2_5examplesempbuildemployee.fdb" user SYSDBA password masterkey;
结果是:
Statement failed, SQLSTATE = 28000
cannot attach to password database
在确认我有正确的目录路径后,我决定暂时放弃连接,并尝试创建一个新的DB:
SQL>CREATE DATABASE 'C:datatest.fdb' page_size 8192
CON>user 'SYSDBA' password 'masterkey';
这也给了我一个错误:
Statement failed, SQLSTATE = 08001
unavailable database
我可能会遇到一些常见的陷阱吗?我还尝试了上面的命令,无论是否运行firebird服务。还有关于SQLSTATE代码的详细参考资料吗?
正如我在评论中已经提到的,问题是由将Firebird服务器作为应用程序运行引起的。火鸟的密码数据库(security2.fdb
(位于C:Program FilesFirebirdFirebird_2_5
中。由于该数据库(几乎但并非完全(是一个普通的Firebird数据库,因此服务器需要对该数据库进行写访问(用于事务等(。
默认情况下(使用UAC(,用户没有对密码数据库的写访问权限,因此这需要提升为管理员。因此,访问Firebird需要将应用程序作为具有足够权限的服务运行(例如,由默认安装程序执行(,或者在将服务器作为应用程序运行时以"管理员"身份运行。另一种选择是不在程序文件中安装它。
此BTW在访问示例员工数据库时应用双重,因为此数据库文件也位于Program Files文件夹中。
这是为macOS/OSX(我的是10.15(firebird 2.5版用户准备的。
- 这里的安装过程不要求sysdba密码。这意味着:安全数据库
'security2.fdb'
在新安装后不存在
这似乎是出于安全原因since > ver 2.5
。
- 要创建一个,我们使用演示数据库作为助手:
以su形式打开sql:>sudo isql(我们没有对dir的用户权限(
- 连接到现有数据库:
sql>连接"Library/Frameworks/Firebird.framework/Resources/examples/empbuild/employe.fdb"用户"SYSDBA"密码"主密钥";
现在,我们在以下文件夹中创建了丢失的文件'security2.fdb'
:
"Library/Frameworks/Firebird.framework/Resources/English.lproj/var/";
(jro(