You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-zh@flink.apache.org by 王双利 <al...@163.com> on 2020/04/22 01:37:47 UTC

回复: Re: flink sql string char 不兼容?

  我这边用kafka的AppendStream没什么问题,
    改的是支持Retract模式的,KafkaTableSinkBase继承的是RetractStreamTableSink
基本是按照下面的链接的地址改的
https://www.cnblogs.com/Springmoon-venn/p/12652845.html



王双利
 
发件人: Leonard Xu
发送时间: 2020-04-22 09:03
收件人: user-zh
主题: Re: flink sql string char 不兼容?
Hi, 王双利
 
我试了下1.10.0的版本,没能复现你的异常, 如Jingsong Lees所说的char(n)到varchar已经支持了,
你能完整的贴下loginevent  的 sql吗?我再看看
 
祝好
Leonard Xu
 
> 在 2020年4月21日,22:22,Jingsong Li <ji...@gmail.com> 写道:
> 
> Hi,
> 
> - 首先1.10中把char Insert到varchar中是支持的,可以再check下哪里有没有问题吗?
> - 'false'应该是char(5)而不是char(4)
> 
> Best,
> Jingsong Lee
> 
> On Tue, Apr 21, 2020 at 9:01 PM Leonard Xu <xb...@gmail.com> wrote:
> 
>> Hi
>> 
>> CHAR(n) 、VARCHAR 在SQL语义里是不同的类型,SQL里写的 ‘false’ 常量会解析到CHAR(n)
>> 因为常量长度已经确定会选择使用CHAR(n),
>> 目前是Flink还不支持CHAR(n) 和 VARCHAR 类型之间的隐式转换,所以类型检查会报错,你可以先用CAST(‘false’ as
>> VARCHAR)后处理。
>> 
>> 祝好
>> Leonard
>> 
>>> 在 2020年4月21日,18:32,王双利 <al...@163.com> 写道:
>>> 
>>> hit声明的是varchar,现在是,'false'  编译的时候认为是char(4) ,导致类型不匹配
>>> 
>>> 
>>> 
>>> 王双利
>>> 
>>> 发件人: Leonard Xu
>>> 发送时间: 2020-04-21 18:29
>>> 收件人: user-zh
>>> 主题: Re: flink sql string char 不兼容?
>>> Hi
>>> Sink 对应的字段(taskid\hit)需要声明成varchar, 现在不支持varchar类型写入char(n)
>>> 
>>> 祝好,
>>> Leonard Xu
>>> 
>>>> 在 2020年4月21日,18:20,王双利 <al...@163.com> 写道:
>>>> 
>>>> 下面的sql 执行的时候报 下面的错误CREATE TABLE  target (
>>>>  jnlno VARCHAR,
>>>> --     taskid char(9),
>>>> --     hit char(4)
>>>> taskid VARCHAR,
>>>>  hit VARCHAR
>>>> )
>>>> insert into  target select  a.jnlno,'111111qeq','false' from loginevent
>> a
>>>> 
>>>> Exception in thread "main"
>> org.apache.flink.table.api.ValidationException: Type STRING of table field
>> 'hit' does not match with the physical type CHAR(4) of the 'EXPR$2' field
>> of the TableSink consumed type.
>>>> 
>>>> Flink 版本 1.10
>>>> 怎么解决呢?Flink sql的 string char 不兼容?
>>>> sql应该怎么写合适呢?
>> 
>> 
> 
> -- 
> Best, Jingsong Lee