2016-02-18 42 views
1

我的問題在標題中。MySQL無法選擇在不同會話中插入的行

我在應用程序中打開一個MySQL會話,並且該應用程序調用創建另一個會話的腳本。我在新會話中插入一條記錄,但是當我在前一個會話中選擇時,我看不到插入的行。

以下是插入查詢:

INSERT INTO VCS.project_files (track_nbr, path, filename) 
    VALUES ('$track_nbr', '$path', '$filename'); 

以下是選擇:

SELECT pf.project_file_id, pf.track_nbr, pf.filename, pf.path, pf.status 
    FROM VCS.project_files pf; 
+1

您是否使用交易?複製?我們可以看到SQL查詢嗎? –

+1

嗨,傑西,我更新了我的帖子與查詢。 – Mocking

+0

謝謝你試圖傑西,我以某種方式設法找到解決方案。 – Mocking

回答

3

我發現這是由於設置爲「重複讀」隔離級別。 '可重複讀'意思就是說,舊會話中的每次讀取都會得到完全相同的行

爲了解決這個問題,我不得不這樣做是對數據庫設置爲 '讀提交' 執行以下操作:

  1. 添加以下行/etc/my.cnf(Ubuntu的)/etc/my.cnf.d/my.cnf(CentOS的):

    [mysqld] 
    binlog_format = row 
    transaction-isolation = READ-COMMITTED 
    
  2. 重新啓動的MySQL(在Ubuntu):

    ​​

這允許所有會話看到承諾其他會話的變化。我使用的是Oracle數據庫(默認爲'讀取提交'),而MySQL則不同(默認情況下爲'可重複讀取')。

+1

您還需要在某個時間執行「COMMIT」,否則它將在默認值爲50秒後超時,並自動回滾您正在執行的任何操作。 –