問題
你不能刪除數據從三角洲表從你當地的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命令時列名。