你好 参考官网 https://ci.apache.org/projects/flink/flink-docs-release-1.12/zh/dev/table/connectors/jdbc.html
这边读取mysql jdbc数据报错Exception in thread "main" org.apache.flink.table.api.TableException: Only insert statement is supported now.
String a = "-- register a MySQL table 'users' in Flink SQL\n" +
"CREATE TABLE MyUserTable (\n" +
" id BIGINT\n" +
") WITH (\n" +
" 'connector' = 'jdbc',\n" +
" 'url' = 'jdbc:mysql://***:3306/monitor',\n" +
" 'table-name' = 't1',\n" +
" 'username' = 'root',\n" +
" 'password' = '***'\n" +
") ";
String b ="-- scan data from the JDBC table\n" +
"SELECT id FROM MyUserTable\n";
tEnv.executeSql(a);
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
您好!根据您提供的错误信息 "Only insert statement is supported now.",这表明您当前使用的Flink版本或JDBC连接器配置仅支持执行插入(INSERT)语句,而不支持查询或其他类型的SQL语句。
Apache Flink 1.12 版本的文档中确实说明了其Table API & SQL对JDBC连接器的支持情况。如果您尝试从MySQL读取数据(即执行SELECT操作),确保您的Flink环境和配置是支持这一功能的。在早期的Flink版本中,JDBC connector可能主要设计用于sink(输出数据到数据库),而不是source(从数据库读取数据)。
为了解决这个问题,您可以考虑以下几种方案:
升级Flink版本:确认您使用的Flink版本是否支持从JDBC读取数据。Flink后续的版本中对JDBC connector进行了增强,增加了对读取数据的支持。查看更新的Flink文档以获取正确的配置方式。
使用更专门的连接器:如果升级Flink版本不可行,可以考虑使用专门为读取MySQL数据设计的第三方连接器,比如Flink-MySQL-CDC Connector,它专为捕获MySQL的变更数据流设计,适合于实时数据分析场景。
修改SQL语句:虽然这个选项不太可能直接解决问题,因为错误提示明确指出不支持查询,但确保您的SQL语句没有误用,且完全符合您所用Flink版本的预期。
检查配置:有时候问题也可能出在配置细节上,重新审视URL、表名、用户名、密码等参数是否有误。
查阅官方文档或社区:Flink的官方文档和用户社区是解决这类问题的好去处,尤其是针对特定版本的功能支持和已知问题,可能会有更详细的解答或示例代码。
希望这些建议能帮助您解决问题!如果有更多详细信息或需要进一步的帮助,请随时告知。