FlinkSQL 执行executeInsert方法,把结果写出到MySQL时,结果表和sink的表的字段顺序不一样导致错误
Table result = tEnv.sqlQuery("select " +
" edt w_end, " +
" item_id, " +
" ct item_count, " +
" rn rk" +
" from t2" +
" where rn <= 3");
// result.execute().print();
// 5. 写出到Mysql中
// 5.1 建立动态表与Mysql关联
tEnv.executeSql("CREATE TABLE `hot_item` (n" +
" `item_id` bigint,n" +
" `w_end` timestamp ,n" +
" `item_count` bigint ,n" +
" `rk` bigint ,n" +
" PRIMARY KEY (`w_end`,`rk`)not enforcedn" +
")with(" +
" 'connector' = 'jdbc',n" +
" 'url' = 'jdbc:mysql://hadoop162:3306/flink_sql?useSSL=false',n" +
" 'table-name' = 'hot_item',n" +
" 'username' = 'root',n" +
" 'password' = 'aaaaaa'" +
") ");
// 5.2 写出
result.executeInsert("hot_item");
结论
FlinkSQL 执行executeInsert方法时,结果表和sink的表的字段顺序必须一致



