Subject Re: [firebird-support] Migrating a 2.5 server
Author Helen Borrie
> So currently I have firebird 2.5 installed and running on Windows,
> working fine but performance is a bit slow.

> I have installed 2.5 on Ubuntu, and I can connect to the current database with ISQL easily:

> connect "192.168.155.112:C:\database\database.FDB" user 'SYSDBA' password 'adminpassword';


> So I stopped the firebird services on the Windows server, copied
> the file to the Ubuntu server, and in isql tried to run:

> SQL
>> connect "localhost:/var/lib/firebird/2.5/data/database.FDB" user 'SYSDBA' password 'adminpassword';
> Statement failed, SQLSTATE = m
> file /var/lib/firebird/2.5/data/database.FDB is not a valid database

OK, besides what Carlos suggested (a bitness problem, meaning Firebird
can't read the database header), consider --

1. 'SQLSTATE = m' is not a valid error message in Firebird. You should
be seeing a 5-character alphanumeric code where the 'm' is. Other
DBMS's use the same name for their SQL command-line apps so make sure
you are running isql from the same location as the binary.

2. Remember that file names on Linux are case-sensitive, so your
'database.FDB' on Windows might not work the same on Linux if the
filename is actually 'database.fdb' or some other case combination.

3. It's a good idea to create an alias for your database once you are
sure you have a good copy and the filename and path are exactly right.

4. It's also a good idea to go the gbak backup/restore route when you
change platforms, even if you are sure about the bitness. If you just
copy the database file, it will contain all the uncleared garbage from
its previous life. Back up the database under the Windows server,
restore it under the Linux one.

> I am not sure if Super or Classic was used on Windows, however I
> have tried using both on Ubuntu with the same error message. Windows
> server version 2.5.6, same version on Linux

It wouldn't matter. A database is a database - it doesn't know about
the server model. But if you are connecting through TCP/IP (including
localhost) make sure that [x]inetd is running if it is Classic you are
running on your Linux box.

Helen