问题
你不能删除数据从三角洲表从你当地的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驱动程序通过提交查询没有重写它。
字符串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命令时列名。