不能删除数据在Eclipse中使用JDBC

δ表上删除操作失败与SparkJDBCDriver错误使用JDBC时在当地一个Eclipse环境。

写的annapurna.hiriyur

去年发表在:2022年5月10日

问题

你不能删除数据从三角洲表从你当地的Eclipse环境中使用JDBC。相同的删除操作在一个笔记本运行时工作。

你可以连接到砖从当地的环境。

一个select查询工作。

整型数= namedlocalJdbcTemplate。queryForObject (“SELECT COUNT(*)从<表名称>”,新MapSqlParameterSource (), Integer.class);

你尝试删除操作失败。

namedlocalJdbcTemplate。更新(“删除从<表名称> id =: id”,参数);参数在哪里MapSqlParameterSource params = new MapSqlParameterSource ();参数个数。addValue (" Id ", " 001 ");

你收到SparkJDBCDriver错误消息。

org.springframework.jdbc。UncategorizedSQLException: PreparedStatementCallback;未分类的SQLException SQL(删除从<表名称> Id = ?);SQL状态(HY000);错误代码[500051];(辛巴][SparkJDBCDriver](500051)查询/错误处理语句。错误代码:0,SQL状态:错误运行查询:org.apache.spark.sql。AnalysisException:不能解决“<表名称>。Id”给定的输入列:[];1号线pos 41;DeleteCommandEdgeδ(version = 0, s3: / / < path-to-database >),(“<表名称>。Id = 001)

导致

这个错误可以发生UseNativeQuery的值为0。

ODBC驱动程序解析查询和做一些修改UseNativeQuery的值为0。一些工具,比如PowerBI,取决于这种转换。例如,PowerBI生成标准ANSI SQL需要翻译引发SQL。它有可能增加不必要的听到如果应用程序已经产生火花的SQL。

解决方案

UseNativeQuery值1在IDE的JDBC连接字符串。这迫使ODBC驱动程序通过提交查询没有重写它。

删除

信息

UseNativeQuery = 0以提交查询为ANSI SQL - 92和重写成火花SQL。UseNativeQuery = 1需要提交的查询逐字并提交它。

字符串CONNECTION_URL = " jdbc:火花:/ / <服务器主机>:443 /违约;运输方式= http; ssl = 1; httpPath = sql / protocolv1 / o / 0 / xxxx-xxxxxx-xxxxxxxx; AuthMech = 3; UID =令牌;PWD = < personal-access-token >; UseNativeQuery = 1”连接连接=零;连接= DriverManager.getConnection (CONNECTION_URL);

检查初始化驱动程序类辛巴在建立一个JDBC连接文档了解更多信息。

当你设置UseNativeQuery值为1,你必须重写你的插入查询,没有指定列的名称。

例如,插入<表名称>值(< ? >、< ? >、< ? >,< ? >,< ? >,< ? >,< ? >,< ? >)

这是因为火花SQL本身不支持使用insert命令时列名。

这篇文章有用吗?