解決Python 與MySQL 中的預存程序互動時的「指令不同步」錯誤
在Python 中,利用Django 執行預存程序時在MySQL 中的過程中,遇到的常見錯誤是「命令不同步;您現在無法執行此命令」。當嘗試在過程呼叫之後執行第二條語句且交易仍在進行時,會出現此錯誤。
要解決此問題,關閉用於執行過程的遊標並在之前創建一個新遊標至關重要執行後續語句:
cursor.close() cursor = connection.cursor()
從過程調用中獲取結果後可以立即關閉遊標。結果集不受影響,仍然可以存取。
以簡化的MySQL 過程為例:
delimiter $$ create procedure my_mysql_procedure(p_page_id int) begin select 1 from dual; end$$ delimiter ;
在Python 中,嘗試時會出現「指令不同步」錯誤在呼叫過程後執行另一語句,如以下程式碼所顯示:
cursor.callproc('my_mysql_procedure', [some_id,]) result = cursor.fetchall() for r in result: do something cursor.execute("select * from some_table") result = cursor.fetchall()
透過在之後關閉並重新開啟遊標過程呼叫後,錯誤被消除,後續語句可以正常執行。此解決方案可確保 MySQL 保持正確的命令序列,並允許後續資料庫操作的無縫執行。
以上是使用 MySQL 預存程序時如何修復 Python 中的「指令不同步」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!