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