标签: firebird

连接到 D2010 上嵌入的 Firebird

我从http://sites.google.com/site/dbxfirebird/下载了 Firebird DBX 驱动程序,并且我已经能够编译“测试连接”项目并使其运行。我将它指向我的测试数据库,如下所示:

procedure TMainForm.Button1Click(Sender: TObject);
var C: TSQLConnection;
begin
  C := TSQLConnection.Create(Self);
  try
    C.DriverName := 'FirebirdConnection';
    C.Params.Add('User_Name=SYSDBA');
    C.Params.Add('Password=masterkey');
    C.Params.Add('Database=C:\fbtest\test.fdb');
    C.Open;
    if C.Connected then
      ShowMessage('Connection is active')
  finally
    C.Free;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

当我运行它时,它工作正常。但是当我将完全相同的代码放入不同的项目中时,它不起作用。我已将 fbclient.dll(Firebird 嵌入式驱动程序 DLL,重命名为 fbclient)、其所有依赖项和 dbxdrivers.ini 文件复制到与项目的 EXE 运行所在的同一文件夹中。我看不出任何原因这不应该工作,但是对 .Open 的调用失败并显示:

项目 Project1.exe 引发异常类 TDBXError 并显示消息“未知驱动程序:FirebirdConnection”。

同样,这是对 Open 的调用。对 DriverName 的分配工作得很好。以前有人见过这个问题吗?为什么完全相同的代码在测试项目中可以工作,但不同的代码却不能工作,有什么方法可以修复它吗?

delphi firebird firebird-embedded

2
推荐指数
1
解决办法
3276
查看次数

编译 php-interbase

我在 64 位 Linux 上尝试编译 PHP --with-interbase=/opt/firebird

这导致

checking for InterBase support... yes
checking for isc_detach_database in -lfbclient... no
checking for isc_detach_database in -lgds... no
checking for isc_detach_database in -lib_util... no
configure: error: libgds, libib_util or libfbclient not found! Check config.log for more information.
Run Code Online (Sandbox Code Playgroud)

libfclient 等都在那里。查看 config.log,当它尝试检查 interbase 时,会出现很多错误:

configure:50792: gcc -o conftest -I/usr/include -g -O2 -fvisibility=hidden -pthread  -D_REENTRANT -L/opt/firebird//lib -L/usr/lib  -L/usr/local/lib conftest.c -lfbclient  $
/opt/firebird//lib/libfbclient.so: undefined reference to `std::bad_alloc::~bad_alloc()'
/opt/firebird//lib/libfbclient.so: undefined reference to `__cxa_pure_virtual'
/opt/firebird//lib/libfbclient.so: undefined reference to `__cxa_rethrow' …
Run Code Online (Sandbox Code Playgroud)

php firebird

2
推荐指数
1
解决办法
4238
查看次数

取消 firebird 中长时间运行的查询或事务

我如何安全地中止/取消当前正在运行的查询/事务。使用 gfix -shut 可能会损坏数据库。我正在使用delphi和firebird 2.5

预先感谢雷纳尔迪

delphi firebird

2
推荐指数
1
解决办法
7540
查看次数

Firebirds SELECT FIRST 可以接受变量吗?

http://www.firebirdsql.org/refdocs/langrefupd20-select.html#langrefupd20-first-skip

手册说 FIRST 接受“任何计算为整数的表达式”。这不也应该意味着一个变量吗?

:DAYS在以下存储过程中,我在尝试提供给时遇到错误FIRST

Token unknown - line 10, column 18
:
Run Code Online (Sandbox Code Playgroud)

第10行第18列是:DAYS前面的...

SET TERM ^ ;

CREATE PROCEDURE P_STOCK_MDA 
 ( STOCK BIGINT, TRADE_DATE DATE, DAYS SMALLINT ) 
RETURNS 
 ( AVG_CLOSE NUMERIC(6,2) )
AS 
BEGIN
  SELECT AVG(STOCK_ADJ_CLOSE) FROM (
    SELECT FIRST :DAYS STOCK_ADJ_CLOSE
    FROM STOCK_DAILY yd 
    WHERE yd.STOCK_STOCK=:STOCK AND yd.TRADE_DATE<=:TRADE_DATE
    ORDER BY yd.TRADE_DATE DESC
  ) INTO AVG_CLOSE;
END^
Run Code Online (Sandbox Code Playgroud)

sql firebird

2
推荐指数
1
解决办法
1173
查看次数

将 fbk (firebird) 文件转换为 MySql

我有 firebird 数据库文件,我想把它转换成 Mysql,但我不知道怎么做。你能帮我如何转换吗?或者你能给我参考我必须使用什么软件来转换它?

谢谢

mysql firebird

2
推荐指数
1
解决办法
4530
查看次数

无法连接到火鸟

我几乎逐行关注此文档:

sudo add-apt-repository ppa:mapopa
sudo apt-get update
apt-cache search firebird2.5-*
sudo apt-get install firebird2.5-superclassic
sudo dpkg-reconfigure firebird2.5-superclassic
Run Code Online (Sandbox Code Playgroud)

在这个阶段我看到一个提示,要求我设置密码SYSDBA,所以我将其设置为root。然后我做剩下的事情:

sudo apt-get install firebird2.5-examples firebird2.5-dev 
cd /usr/share/doc/firebird2.5-examples/examples/empbuild/
sudo gunzip employee.fdb.gz
sudo chown firebird.firebird employee.fdb
sudo mv employee.fdb /var/lib/firebird/2.5/data/
Run Code Online (Sandbox Code Playgroud)

最后:

$ isql-fb
SQL> connect "/var/lib/firebird/2.5/data/employee.fdb " user 'SYSDBA' password 'root';
Run Code Online (Sandbox Code Playgroud)

结果,我收到以下错误消息:

Statement failed, SQLSTATE = HY000
operating system directive open failed
-Permission denied
Run Code Online (Sandbox Code Playgroud)

这有什么问题吗?

ubuntu firebird

2
推荐指数
1
解决办法
2666
查看次数

查找 Firebird 数据库中作为主键的所有列名

我需要在表中查找作为主键的所有列并返回它们的列名。

有没有办法用Connection.GetSchema()Firebird .net API的方法来实现这一点?如果没有,SQL 语句将如何实现这一点?

我不需要完整的代码示例,但需要一些有关如何执行此操作的指导。

在我的场景中,我有一个 Firebird 嵌入式数据库,我想从数据库模式生成存储的 prodecures。我需要主键列名称在表上生成触发器,将一些元数据插入到跟踪表中。

我使用最新版本的 Firebird 和最新的 .net 连接器 (v.2.5.5)

如果您需要有关我的问题的更多信息,请发表评论!

.net c# firebird primary-key firebird-embedded

2
推荐指数
1
解决办法
3912
查看次数

Firebird .NET Provider 5.0.0 和 EF6

我一直在尝试创建 Firebird 数据库的实体数据模型,但我无法克服这个错误:

这个错误。

我已经安装:

  • DDEX 提供程序 3.0.2.0

  • Firebird .NET Provider 5.0.0.0(尝试使用来自 Firebird 官方网站的 .msi 安装它并手动将引用添加到项目并从 NuGet 安装它)

  • EntityFramework.Firebird(来自 NuGet)

这是我的 machine.config:

    <system.data>
         <DbProviderFactories>
            <add name="FirebirdClient Data Provider" invariant="FirebirdSql.Data.FirebirdClient" description=".NET Framework Data Provider for Firebird" type="FirebirdSql.Data.FirebirdClient.FirebirdClientFactory, FirebirdSql.Data.FirebirdClient, Version=5.0.0.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c"/>
         </DbProviderFactories>
    </system.data>
Run Code Online (Sandbox Code Playgroud)

这是我的 App.config:

 <configSections>
     <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
 </configSections>

 <system.data>
     <DbProviderFactories>
         <remove invariant="FirebirdSql.Data.FirebirdClient" />
         <add name="FirebirdClient Data Provider" invariant="FirebirdSql.Data.FirebirdClient" description=".NET Framework Data Provider for Firebird" type="FirebirdSql.Data.FirebirdClient.FirebirdClientFactory, FirebirdSql.Data.FirebirdClient" />
     </DbProviderFactories>
 </system.data>

 <entityFramework>
     <providers>
         <provider invariantName="FirebirdSql.Data.FirebirdClient" type="FirebirdSql.Data.EntityFramework6.FbProviderServices, …
Run Code Online (Sandbox Code Playgroud)

.net firebird entity-framework entity-framework-6

2
推荐指数
1
解决办法
1554
查看次数

多列上的 Firebird SQL 索引

这是针对 Firebird 2.5 的。

我有一个表 T,其索引由 2 列组成,例如 ColA 和 ColB。如果我正在做 : SELECT * FROM T WHERE ColA=...,所以 WHERE 子句只在 A 列上,Firebird 会为列 ColB 设置默认值,以及索引的好处,还是根本不能使用这个索引?

一些上下文:我正在进行数据库升级。这是我所拥有的:

CREATE TABLE user(
     newid BIGINT NOT NULL,
     oldid BIGINT NOT NULL,
     anotherCol INT);

CREATE INDEX idx ON  user(oldid, anotherCol);
     
CREATE TABLE order(
     RefUser BIGINT);
  
Run Code Online (Sandbox Code Playgroud)

order.RefUser 是 oldid,我需要将它们更改为 newid。我使用这个查询来做到这一点:

UPDATE order o SET o.refuser = (SELECT u.newid FROM user u WHERE u.oldId = o.refuser);
Run Code Online (Sandbox Code Playgroud)

此时,oldid 仍然是唯一的,但稍后将仅保证 (oldid, anotherCol) 的唯一性,因此索引,以及 newid 的创建。

用户表是几百万条记录,订单表是几千万条:这个查询需要一个多小时。我想看看如何改进它(不热衷于在这段时间内关闭关键服务)。

sql firebird firebird2.5

2
推荐指数
1
解决办法
1141
查看次数

firebird - 死锁更新与并发更新冲突

我正在维护一个旧软件(Firebird 2.5 和 C#.net)。最近我们收到了很多“死锁更新与并发更新冲突”的错误。我检查了交易设置。它没有设置等待超时选项:

public override IDbTransaction BeginTransaction(IDbConnection conn)
{
    FbTransaction trans = null;

    if (conn.State != ConnectionState.Open)
        conn.Open();

    FbTransactionOptions op = new FbTransactionOptions();
    op.TransactionBehavior = FbTransactionBehavior.ReadCommitted | FbTransactionBehavior.RecVersion;

    trans = ((FbConnection)conn).BeginTransaction(op);

    return trans;
}
Run Code Online (Sandbox Code Playgroud)

那么,为什么我们会超时?难道不应该等待提交一个事务来提交下一个事务吗?

firebird deadlock firebird2.5

2
推荐指数
1
解决办法
3636
查看次数