Debezium 和 Float 数据类型
Debezium and Float data type
我在 MySQL 中有一个 float 数据类型
我尝试了所有的十进制转换器,但每次都得到错误的值
源数据类型float(3,2)
插入的值:32.43
来自 Kafka 主题的值:9.99
知道为什么转换没有正常进行吗?
更新时间:2021-07-26
我发现这是来自 MySQL 方面的,因为 MySQL 本身以该格式存储该值。即使是 binlog 也仅将其存储为 9.99
。
Kafka 或 Debezium 没有产生这个问题,它来自 MySQL。我检查了table和binlog,值只有9.99。
Table DDL:
CREATE TABLE `table1` (
`id` int(11) NOT NULL,
`name` varchar(100) DEFAULT NULL,
`point` decimal(3,2) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
insert into table2 values (29,'bbb',32.43);
select * from table1;
| 29 | bbb | 9.99 |
但是有一个警告。
Out of range value for column 'point' at row 1
学分:
我在 MySQL 的 slack 社区中问了这个问题。 Graham Halsey 帮助我理解了这个问题。
float(3,2) means you can store 3 digits, 2 of which are after the decimal point
我在 MySQL 中有一个 float 数据类型 我尝试了所有的十进制转换器,但每次都得到错误的值
源数据类型float(3,2)
插入的值:32.43
来自 Kafka 主题的值:9.99
知道为什么转换没有正常进行吗?
更新时间:2021-07-26
我发现这是来自 MySQL 方面的,因为 MySQL 本身以该格式存储该值。即使是 binlog 也仅将其存储为 9.99
。
Kafka 或 Debezium 没有产生这个问题,它来自 MySQL。我检查了table和binlog,值只有9.99。
Table DDL:
CREATE TABLE `table1` (
`id` int(11) NOT NULL,
`name` varchar(100) DEFAULT NULL,
`point` decimal(3,2) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
insert into table2 values (29,'bbb',32.43);
select * from table1;
| 29 | bbb | 9.99 |
但是有一个警告。
Out of range value for column 'point' at row 1
学分:
我在 MySQL 的 slack 社区中问了这个问题。 Graham Halsey 帮助我理解了这个问题。
float(3,2) means you can store 3 digits, 2 of which are after the decimal point