Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Firebird -arithmetic exception, numeric overflow
#1
Firebird de ki bir tablomda varchar alanlarmı ibexpert ile charsetini win1254 den utf8 e çevirdim çalışan insert kodlarımda hep bu hatayı aldım
"Dynamic SQL Error SQL error code = -303 arithmetic exception, numeric overflow, or string truncation string right truncation"
tekrar win1254 yapana kadarda düzelmedi bu tür durumlarda tabloyu yeniden oluşturmadan bir çözüm yolu yokmudur?

“Do. Or do not. There is no try.”
Cevapla
#2
Bu hata, örneğin veritabanında adi varchar(20) şeklinde bir alan tanımladınız diyelim, siz 20 değilde 25 karakterli bir veri girmek istediğinizde ortaya çıkar diye biliyorum (yanlışta biliyor olabilirim), buna dikkat ederseniz sorunu çözersiniz bence.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#3
(08-02-2017, Saat: 12:14)esistem Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlBu hata, örneğin veritabanında adi varchar(20) şeklinde bir alan tanımladınız diyelim, siz 20 değilde 25 karakterli bir veri girmek istediğinizde ortaya çıkar diye biliyorum (yanlışta biliyor olabilirim), buna dikkat ederseniz sorunu çözersiniz bence.

Hocam hatanın sebebi örnek musteriadi tanımlarken charseti win1254 tanımlamıştım daha sonra bunu utf8 olarak değiştirdim bundan kaynaklanıyor nedense değiştirmek böyle bir hataya sebep veriyor tabloyu drop edip yeniden create etmeden bir çözümü varmıdır merak etim yada benmi bir şeyi atlıyorum diye.

“Do. Or do not. There is no try.”
Cevapla
#4
Hiç böyle bişi denemedim şimdiye kadar bişi diyemiyorum maalesef.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#5
(08-02-2017, Saat: 16:34)esistem Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlHiç böyle bişi denemedim şimdiye kadar bişi diyemiyorum maalesef.

Hocam denemeyinde zaten hele içinde kayıt  olan bir tabloda hiç denemeyin Smile

“Do. Or do not. There is no try.”
Cevapla
#6
utf8 de sanırım türkçe karakterler yerine farklı birkaç karakter birde basıyordu o yüzden sizdeki bu hata oluşmuş olabilir.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#7
Utf8 yapmaktaki sebep neydi acaba ? Farklı dillerde kayıt tutmak için mi utf8' e çevirmek istiyorsunuz ?
Amaç sadece Türkçe kayıt tutmaksa, WIN1254 işinizi görecektir.
Ben kendi veritabanıma characterset WIN1254, collation değerini ise PXW_TURK olarak kullanıyorum ve özellikle listelerde Türkçe harflerin sıralamasında şimdiye kadar hiç sorun yaşamadım. PXW_TURK yokken İ,Ş,Ğ harflerini en sona atıyordu.

wL7T0.jpg

E.O.F.  (End Of Fun )
Rolleyes
Cevapla
#8
(17-02-2017, Saat: 12:52)ramazan_t Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlUtf8 yapmaktaki sebep neydi acaba ? Farklı dillerde kayıt tutmak için mi utf8' e çevirmek istiyorsunuz ?

utf8 yapmak istememde ki sebep çoğunlukla arapça ve bir kaç dilde daha veri girişi içindi türkçe kısmında aynen sizin kullandığınız gibi kullanıyorum bende collation PXW_TURK yaptığımda order by larda düzgün sıralıyor diğer türlü türkçe karakterler order by da en sona atıyor.
ama win1254 olan bir alanı daha sonra utf8 yapınca ilk mesajımdaki hatayı alıyorum.

“Do. Or do not. There is no try.”
Cevapla
#9
Tabloları yeniden oluşturmadan bu iş maalesef mümkün değil. Aslında mümkün, ama çevirme işlemi sonrasında veri kayıpları oluyor. Veri kayıpları demeyelim de karakter kayıpları diyelim. Yani Türkçe'ye özgü harflerin farklı ASCII karakterlere dönüşmesi gibi bir durum oluşuyor. Normalde DBWorkbench vb. programlar buna izin bile vermiyor, IBEXPERT ile yapılabiliyor ama sonuç da böyle oluyor.

Ben çevirme işlemi yapmak yerine, tablonu utf8 ile yeniden oluşturup eski tablodan yeni tabloya sadece dataları DATAPUMP yapmanı öneririm. Bu şekilde yaptığında herhangi bir sorun olmadan veriler aktarılabiliyor. Yeni girilen kayıtlarda da problem olmuyor. Datapump yapmasını bilmiyorsanız, IBEXPERT ile SQL şeklinde verileri export edip yeni tabloya import'da edebilirsiniz.

Saygılarımla.

E.O.F.  (End Of Fun )
Rolleyes
Cevapla
#10
(17-02-2017, Saat: 14:41)ramazan_t Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlTabloları yeniden oluşturmadan bu iş maalesef mümkün değil.

Diğer veritabanlarında da durum böylemidir bir bilginiz varmı?

“Do. Or do not. There is no try.”
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Firebird de Enter karakter sorunu çözümü mcuyan 2 106 01-07-2018, Saat: 14:31
Son Yorum: klavye
  Firebird'de bellek Kullanımı rmzgenius 1 91 25-06-2018, Saat: 15:34
Son Yorum: klavye
  firebird 3 hakkında sorular masteryoda 9 867 06-06-2018, Saat: 18:51
Son Yorum: canbir
  Firebird Trigger'a parametre gönderme esistem 0 190 23-05-2018, Saat: 10:55
Son Yorum: esistem
  Firebird 3 embedded versiyon autoinc alan problemi canbir 4 223 16-05-2018, Saat: 23:24
Son Yorum: canbir



Konuyu Okuyanlar: 1 Ziyaretçi