不能刪除數據在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命令時列名。