Java Derby iyi güzelde …


2-3 aydan beri Derby’i projelerimde kullanıyorum. Gerek türkçe desteği olsun, gerek hızıyla, gerek veri işleyebilme sağlamlığıyla olsun beni etkilemeyi başarmış bir veri tabanı. Tek sorunum veritabanının kapatılmasıyla ilgili. İşlemlerim bittikten sonra finally bloğuyla bile kapatsam yinede veritabanı bozuluyor. Ve verilerin geri gelmesi imkansız oluyor. Eğer, veritabanıyla ilgili bir hata alıyorsanız, veritabanının bulunduğu dizinde db.lck dosyasını silmelisiniz. Böylelikle tekrar veritabanına ulaşabilirsiniz. Eğer yine hata alıyorsanız. Hatta benim aldığınız hata şu ise

java.sql.SQLException: Failed to start database

db.lck dosyasını silseniz bile veritabanına bağlanamazsınız. Henüz bunun yanıtını verende olmadı. Neden bu hata ortaya çıkyor ? Cevap veren kimse yok. Belki ilerki sürümlerde bu sorun aşılabilir. Yukardaki hatanın çözümü ise log1.dat dosyasını silinmesi. Ne olur ne olmaz siz en iyisi adını değiştirin. Programı yeniden açtığınızda yeni log1.dat dosyanız oluşmuş olacak. Bende herhangi bir veri kaybı meydana gelmedi. Ama ne olur ne olmaz, veritabanını yedekleyen bri algoritma geliştirmeliyim. Bir diğer kötü yanı ise veritabanına kullanıcı adı ve şifreyle giriyorsanız, bunu sonrada değiştirebilirsiniz. db.lck dosyasını silince istediğim gibi girebildim. Bu demek oluyorki, bir kişi benim veritabanıma direk girebilir.

  • Share/Bookmark
  1. #1 by Tahir Emre at Şubat 7th, 2009

    Merhaba,

    Bu kapatma işlemi düzgün olmadığı için ilgili dosyalar barınmaya devam ediyor olabilir. Aşağıdaki iki bağlantıdaki kapatma örneklerini inceleyip deneyebilirsin:
    http://db.apache.org/derby/docs/dev/devguide/tdevdvlp40464.html
    http://db.apache.org/derby/integrate/plugin_help/derby_app.html (shutdown() metotu)

    Ayrıca eğer kullanmıyorsan bağlantı havuzu kullanmanı öneririm. http://kodveus.blogspot.com/2008/06/jdbc-veritabanlar-classpath-falan-filan.html adresindeki örnek projede bağlantı havuzu örneği var. Her ne kadar örnek proje MySQL’e bağlanmak için yazılsa da, Derby’e çevirmek zor olmayacaktır.

    Sistemden çıkarken mutlaka yukarıdaki bağlantılarda anlatıldığı gibi kapatmak sorunları azaltacaktır diye düşünüyorum.

  2. #2 by Racih at Şubat 7th, 2009

    Merhaba hocam,

    Verdiğiniz yardımcı kaynaklar için teşekkür ederim. Bunlarıda deneyeceğim. Ben JPA da entitymanager.close(); diyorum. Yine fayda etmiyo sizin verdiğiniz örnekleri ekleyip deneyeyim.

    Teşekkürler :-)

(will not be published)
:D :-) :( :o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:
  1. No trackbacks yet.