任务运行时异常: No operations allowed after statement close

问题描述/异常栈

No operations allowed after statement close

解决方案

针对这种情况需要在jdbc链接信息后面添加autoReconnect=true
例如:
CREATE TABLE user_log_sink(
    `table` VARCHAR, 
    item_id VARCHAR,
    sub VARCHAR,
    subr VARCHAR
) WITH (
  'connector.type' = 'jdbc',
  'connector.url' = 'jdbc:mysql://localhost:3306/test?autoReconnect=true',
  'connector.table' = 'user_log',
  'connector.driver' = 'com.mysql.jdbc.Driver',
  'connector.username' = 'your_username',
  'connector.password' = 'your_password',
  'connector.write.flush.max-rows' = '1',-- jdbc写入缓存的最大行数。默认值5000
  'connector.write.flush.interval' = '1s', -- jdbc 写入缓存flush时间间隔。默认为0,立即写入
  'connector.write.max-retries' = '3'
);

问题原因

因为Mysql5以后针对超长时间DB连接做了一个处理,如果一个DB连接在无任何操作情况下过了8个小时后,Mysql会自动把这个连接关闭。

作者:焦巍