我正在尝试设置一个本地firebird实例来测试,但即使是ISQL也无法连接到它。我按照快速入门指南here尝试了以下内容:
CONNECT ..\examples\empbuild\employee.fdb user SYSDBA password masterkey;
导致:
Statement failed, SQLSTATE = 08001
unavailable database
经过一番搜索,我尝试将其修改为:
CONNECT "localhost:C:\Program Files\Firebird\Firebird_2_5\examples\empbuild\employee.fdb" user SYSDBA password masterkey;
导致:
Statement failed, SQLSTATE = 28000
cannot attach to password database
在确认我有正确的目录路径后,我决定立即联系并尝试创建新的数据库:
SQL>CREATE DATABASE 'C:\data\test.fdb' page_size 8192
CON>user 'SYSDBA' password 'masterkey';
这也给了我错误:
Statement failed, SQLSTATE = 08001
unavailable database
我可能会遇到任何常见的陷阱吗?我也尝试过上面的命令,无论是否运行firebird服务。还有关于SQLSTATE代码的详细参考吗?
答案 0 :(得分:12)
正如我在评论中已经提到的那样,问题是由将Firebird服务器作为应用程序运行引起的。 Firebird在security2.fdb
中有密码数据库(C:\Program Files\Firebird\Firebird_2_5
)。由于此数据库(几乎(但不完全)是普通的Firebird数据库),因此服务器需要对此数据库的写访问权(对于事务等)。
默认情况下(使用UAC)用户没有密码数据库的写入权限,因此需要提升到管理员。因此,访问Firebird要求您将应用程序作为具有足够权限的服务运行(例如,由默认安装程序完成),或者将服务器作为应用程序运行,以“以管理员身份”运行它。另一个选择是不在程序文件中安装它。
当访问示例员工数据库时,此BTW应用double,因为此数据库文件也位于Program Files文件夹中。
答案 1 :(得分:0)
这适用于 macOS/OSX(我的是 10.15)firebird 2.5 版用户。
'security2.fdb'
不存在。这似乎是出于安全原因since > ver 2.5
。
以su身份打开sql:>sudo isql(我们没有目录的用户权限)
sql>连接 "/Library/Frameworks/Firebird.framework/Resources/examples/empbuild/employee.fdb " 用户 'SYSDBA' 密码 'masterkey';
现在我们在文件夹中创建了丢失的文件 'security2.fdb'
:
"/Library/Frameworks/Firebird.framework/Resources/English.lproj/var/"
(jro)