Mysql, çıkarma işlemi, unsigned int

Standard

Gene bir ben yandım eller yanmasın olayı.  Mysql de bir tablomda iki int alanim var.  ikisinin farkini almak istedim.


select a, b, a - b from sayilar

gelen sonuclardan birkac ornek


7, 7, 0
18, 53, 18446744073709551581
30, 8, 22
1, 2, 18446744073709551615

kucukten buyuk cikarmaya calismadigim surece sorun yok. ama 1 den 2 cikarinca cok buyuk bir sayi cikiyor.

sorun bu alanlari unsigned olarak tanimlamis olmam.

“minus” : bu da google a yem olsun

Reklamlar

mysql , Incorrect string value

Standard

Twitterdan bazı twitleri alıp veritabanımda toplamak istedim. Google bile mailleri yanlışlıkla uçurduktan sonra, insanların twitlerinin bir yedeğini tutayim ki, aynısını twitter yaparsa sahiplerine geri satarım 🙂

Denemeleri yaparken bir exception aldım

java.sql.BatchUpdateException: Incorrect string value: '\xEF\xBF\xBDzmi...' for column 'text' at row 1
at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:2020)
at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1451)

herzamanki gibi türkçe karakterler.

Bazı denemelerden sonra çözüldü. Sanırım çözen şey şuydu 🙂

SET CHARACTER SET utf8

yani, herşeyin başında,

Statement stmt = conn.createStatement();
stmt.execute("SET CHARACTER SET utf8");