Pardus 2008.2 – Ubuntu 8.04 de Firebird uyumsuzluğuna bir çözüm

İki farklı sistem arasında kullanmakta olduğunuz FirebirdSql veritabanınızı taşımak isteniz, ve taşıdığınız yerde onu açamıyorsunuz.
Aşağıdaki gibi bir sorun ise belki sizin içinde bir çözüm olabilir.

Öncelikle Pardus 2008.2 deposundan pisi ile Firebird Superserver 2.1.1 sürümü kurulabiliyor.
Ubuntu 8.04 deposunda buna karşılık Firebird Superserver 2.1.0 (firebird2.0-super) var.

Aşağıda Ubuntu 8.04 ‘e taşımak istediğiniz veritabanınız için işlemler yer almakta,

Kod
========
apt-get install firebird2.0-super

Veri tabanınızı taşıdıktan sonra

Kod
========
# isql-fb
SQL> connect “/var/firebird/database.fdb” user ‘SYSDBA’ password ‘masterkey';

ile bağlanmak istediğinizde aşağıdaki hatayı alıyor olabilirsiniz.

Hata
=========
Statement failed, SQLCODE = -820
unsupported on-disk structure for file /var/db/firebird/database.fdb; found 11.1, support 11.0

İki sürüm arasında fark ve çalışmıyor. Daha yeni bir sürüme ihtiyacınız var demektir.
Depo güncellemelerinde var mı yok araştırıp bulamaz iseniz, Firebird download sayfasından son güncel tar.gz dosyasını indirin.
http://www.firebirdsql.org/index.php?op=files&id=engine
* FirebirdSS-2.1.2.18118-0.i686.tar.gz

Kuruluş
=========
Firebird kurmadan önce sisteme xinetd kurulmalı.
# apt-get install xinetd
# apt-get install libstdc++5
# .. /FirebirdSS-2.1.2.18118-0.i686$/install.sh

Please enter new password for SYSDBA user: masterkey

test için alttaki komutları deneyebilirsiniz
# netstat -an | grep 3050
# ps -Al | grep fb

Kod
==========
/opt/firebird/bin # ./isql
SQL> connect “/var/firebird/database.fdb” user ‘SYSDBA’ password ‘masterkey';

Hata
==========
“COLLATION UNICODE for CHARACTER SET UTF8 is not installed”

alıyorsanız, çalışan sistemlerdeki lib dosyaları arasında fark olma ihtimali yüksektir.
Kontrol için

Kod
==========
Ubuntu
# ldd fbserver | grep icu
libicuuc.so.30 => /opt/firebird/lib/libicuuc.so.30 (0xf7ec5000)
libicudata.so.30 => /opt/firebird/lib/libicudata.so.30 (0xf7d7f000)
libicui18n.so.30 => /opt/firebird/lib/libicui18n.so.30 (0xf7d41000)

Pardus
# ldd fbserver | grep icu
libicuuc.so.36 => /usr/lib/libicuuc.so.36 (0xb7f0d000)
libicudata.so.36 => /usr/lib/libicudata.so.36 (0xb755d000)
libicui18n.so.36 => /usr/lib/libicui18n.so.36 (0xb7425000)

Bu durumda veritabanınızı kopyaladığınız bilgisayar üzerinde veritabanınızın yedeğini alın (backup) ve geri açın (restore).
Kod
=========
/opt/firebird/bin #

Yedek (Backup)
./gbak -user SYSDBA -password masterkey -v -b -t /var/firebird/database.fdb /var/firebird/ydk.database.fbk

Aç (Restore)
———————-
# ./gbak -c -v -rep -user SYSDBA -password masterkey /var/firebird/ydk.database.fbk /var/firebird/database-2.fdb

yeniden isql ile bağlandığınızda sorun çıkmayacaktır.
SQL> connect “/var/firebird/database-2.fdb” user ‘SYSDBA’ password ‘masterkey';
SQL>