您好:我在Apache下運行使用PHP7.0 OO風格編寫的無狀態(REST)Web服務。他們使用mysqli連接到AWS上的mariaDB實例。我們發現了一個數據庫同步問題,並不確定問題出在哪裏或如何解決。如何在剛剛插入的記錄上解決mysqli-mariaDB更新失敗
客戶呼叫到服務1將插入一個記錄,並返回由$ i_primary_key = $這個 - > DB-> INSERT_ID,後成功插入檢索的自動生成的主密鑰;
下一個客戶端調用將使用該主鍵執行服務2,將更新
自服務1和2是分開的HTTPS電話,他們創建自己的連接,資源等方面的記錄
問題是,有時服務2失敗,抱怨帶有這種主鍵的記錄不存在。在獲得服務1的結果後再嘗試或人工延遲呼叫服務2,並且事情按照他們應該的方式工作。
如何告訴mariaDB引擎或mysqli API在插入後刷新其緩存?我只是猜測服務1中的引擎/連接尚未將其資源提供給其自己的內部服務器,因此引擎的其他客戶端不會看到最新的更改/數據。
有什麼建議嗎?
感謝
嗨:autocommit是1.正如我寫的,這些服務大多工作。有一段時間它不會。實際上它只發生在我們的測試環境中,在那裏我們通過編程方式生成調用轟擊服務器......將嘗試明確的START/COMMIT,它應該有所幫助,但不確定我們是否解決了根本原因,因爲autocommit已經= 1。 , 會嘗試。 –
您是否在每次查詢後檢查錯誤? –
嗨:啓動和提交沒有幫助。 INSERT總是對服務1的調用者起作用,因爲它確實獲得了插入的鍵值。沒有錯誤。決不。問題是服務2調用者,即使他知道這個鍵,當他執行服務2時,更新,更新有時會失敗,並且記錄不存在。所以,回到原來的問題,如上所述。 API-to_Engine級別存在更深層次的問題。 –