本文介紹提交數據變更工單時常見的報錯及解決方案。
根據安全規則設置,禁止直接執行命令類型:XXXX或不允許提交類型為XXXX的變更語句
報錯示例:
SQL類型檢查不通過,根據安全規則設置,禁止直接執行命令類型:XXXX,如果需要,請聯系DBA或管理員調整!調整規則的入口路徑:安全與規范->安全規則->編輯->SQL變更->SQL執行規則,未匹配到該命令類型的任何規則,默認禁止執行
報錯原因:安全協同模式的數據庫綁定的安全規則不允許執行或提交該SQL命令,因此該命令會被攔截。
解決方案:禁止執行或不允許提交的SQL命令類型有非UNKNOW(DMS正常識別的SQL命令)和UNKNOW(DMS不能識別的SQL命令)兩種,您可按需選擇解決方案。
非UNKNOW
DMS可正常識別到非UNKNOW類型的命令,但當前的安全規則默認不允許該命令執行,請聯系DBA或管理員,調整對應的安全規則。調整規則的具體操作如下。
查看安全規則集名稱。
進入數據變更工單詳情頁,單擊右上方的操作日志,查看規則集名稱。
調整安全規則。
登錄數據管理DMS 5.0。
在頂部菜單欄中,選擇
。在安全規則頁簽中,單擊目標規則集操作列下的編輯。
在左側導航欄中,單擊SQL變更。
根據報錯提示選擇檢測點。例如上述報錯示例中檢測點需選擇SQL執行規則。
選擇待調整的安全規則,并單擊操作列下的編輯。
說明根據錯誤提示命令所屬的SQL語言類型選擇待調整的安全規則。例如,錯誤提示的命令類型為CREATE_INDEX,則需要選擇DDL相關的安全規則。
將報錯提示的SQL類型添加至對應安全規則的規則DSL中。
例:失敗原因提示禁止執行命令類型:CREATE_INDEX,您需要將該類型命令加入DDL提交工單的相關規則中,如下圖所示。
單擊提交。
調整完成后,您需要在工單詳情頁的預檢查區域,單擊重試,DMS將會重新進行類型檢查。
UNKNOW
檢查您提交的SQL語句是否有誤。若有誤,請在預檢查區域單擊修改SQL,確認修改后再單擊重試,重新進行類型檢查。
若您提交的SQL無誤,請單擊預檢查區域的查看詳情,篩選并查看被標識為UNKNOW的SQL語句,再聯系管理員或DBA將被標識的SQL語句添加至安全規則中,并允許該語句在DMS執行,提交完成后,再單擊重試。調整識別規則的操作步驟,請參見調整安全規則。
檢查影響行數失敗,語法檢查失敗
報錯示例:
檢查影響行數失敗,語法檢查失敗,錯誤信息:ERROR. pos 37,line 1,column 31,token WHERE
報錯原因:提交工單進行數據變更的預檢查階段,DMS會通過檢查掃描行數再次檢查SQL語句的語法是否有誤。
解決方案:檢查您提交的SQL語句的語法是否有誤。
若SQL語法有誤,請在修改SQL后,單擊預檢查區域的重試,DMS將重新檢查掃描行數。
在確保SQL語法無誤后,您可以單擊預檢查區域的檢查掃描行數右側的跳過,忽略該錯誤。
Hologres使用BEGIN和END語句提交數據變更在DMS顯示成功,但實際變更失敗,該如何處理?
失敗原因
由于DMS解析SQL的能力限制,無法將END語句解析為COMMIT命令,因此不支持使用BEGIN和END語句來開啟并提交事務。
解決方案
方案一:使用DMS支持的BEGIN和COMMIT命令提交事務。
方案二:刪除SQL中的BEGIN和END,然后提交DMS普通數據變更工單,在執行變更階段,選擇開啟整體事務運行即可。具體操作,請參見普通數據變更。