Subject Re: [IBO] Firebird and Interbase on the same machine
Author Helen Borrie
At 01:49 AM 12/05/2005 +0000, you wrote:
>Hi All,
>
>I've got a new project that requires me to run Firebird 1.5 and
>Interbase 6.5 servers on the same machine. Now, since installing
>Interbase, all my existing apps are failing to open saying that my
>username and password aren't defined. Apparently, they are now using
>Interbase instead of Firebird and are therefore using the wrong
>security database. I can still open all of my Firebird databases with
>IBExpert so I assume there must be a setting in the IBO components
>that specify which server engine to use.
>
>What should I look for?

This isn't exactly simple to do. You should probably start by studying the
Firebird 1.5 releasenotes to find out the changes you have to do in
configuration and in your application's connection strings to make this work.

In the IBO side there is more than one way to kill the cat. If you are
using just the default IBO setup then the client library (that should be)
loaded for Fb 1.5 is fbclient.dll, renamed to gds32.dll, and moved to the
system directory. You can see how your problem happened: your
installation of IB 6.5 overwrote firebird's client. Later editions of
IBExpert are OK because you can tell IBE to use fbclient.dll in the system
directory. For clients, you have to put it there.

IB 6.5 doesn't know how to run on the same machine as another server so,
unfortunately, you are stuck with letting IB have its way and "own" the
default port (3050) and choosing a different port for Firebird (people
usually choose 3051, if it's available).

That means that all the mods will have to be applied to your Firebird
apps. There will two main things:

1) all your connection strings will have to have the port number in them
(which you can't do for IB 6.5). For example,

MyServer:c:\data\mydatabase.fdb
becomes
MyServer/3051:c:\data\mydatabase.fdb

2) You will have to tell IBO where to find the Firebird client
library. The best option from the POV of portability is to keep the name
fbclient.dll and to locate it in the system directory on both server and
clients; and either

a) write a new little unit, like this, names IB_FirebirdSession.pas:

{$INCLUDE IB_Directives.inc}

unit
IB_FirebirdSession;

interface

uses
IB_Constants;

implementation

initialization
// Replace the normal value with the alternate client DLL value.
IB_Constants.IB_GDS32 := 'FBCLIENT.DLL';

end.

Make this unit the first of all in the uses clause of your DPR.

or

b) Alter the declaration of the constant IB_GDS32 in IB_Constants.pas.

The second method is not very nice, if you are using IBO to write apps for
both Fb 1.5 and for InterBase or Fb 1.0, because you'll have to remember to
change and recompile IB_Constants.pas each time you work on a different
project.

Helen