簡體   English   中英

MySQL無法選擇插入不同會話的行

[英]MySQL cannot select a row inserted in a different session

我的問題在標題中。

我在應用程序中打開一個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;

我發現這是由於隔離級別設置為'可重復讀取'。 “可重復讀取”意味着它所說的內容,舊會話中的每個讀取都將獲得完全相同的行

為了解決這個問題,我必須通過執行以下操作將數據庫設置為“read committed”:

  1. /etc/my.cnf添加到/etc/my.cnf (Ubuntu) /etc/my.cnf.d/my.cnf ( CentOS):

     [mysqld] binlog_format = row transaction-isolation = READ-COMMITTED 
  2. 重啟MySQL(在Ubuntu中):

     sudo service mysql restart 

這允許所有會話查看其他會話的已提交更改。

我習慣了Oracle數據庫(默認情況下為“read committed”),而MySQL則不同(默認情況下為“可重復讀取”)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM