mysql master-slave 日志传送时字段类型为decimal的问题

12-02-17 ybzshizds
我们采用了mysql master-slave replication的模式去做读写分离,master中有一张表(tableA)的字段类型为lat decimal(7,4),master通过用户的web访问写入的数据都是正常的,如:23.4785,但是同步到slave中的数据就变成999.9999了。后来我们查看日志传送的记录发现sql变成这样了

update tableA set lat=0x5429875657 where id=4758 //这里的0x5429875657是我随便写的,反正都是以0x开头

后来我们通过mysql的客户端直接用sql语句修改master的这张表,发现slave同步到的数据正常了

master sql语句为: update tableA set lat=23.4785 where id=4758

查看日志传送的sql语句也为:update tableA set lat=23.4785 where id=4758

salve同步到的数据正常。

后来我们怀疑是web端通过hibernate生成的sql语句有什么特殊的地方,所以我们打印出hibernate生成的sql语句

Hibernate: update set lat=? where id =?

lat:23.02913 id:4936

发现也没有什么特殊的地方,真的是搞不懂,反正通过hibernate这样一修改,master slave日志传送中的sql语句就是这样了

update tableA set lat=0x5429875657 where id=4758

banq
2012-02-17 10:35
估计是编码的问题

猜你喜欢