[英]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”:
/etc/my.cnf
添加到/etc/my.cnf
(Ubuntu) /etc/my.cnf.d/my.cnf
( CentOS):
[mysqld] binlog_format = row transaction-isolation = READ-COMMITTED
重啟MySQL(在Ubuntu中):
sudo service mysql restart
這允許所有會話查看其他會話的已提交更改。
我習慣了Oracle數據庫(默認情況下為“read committed”),而MySQL則不同(默認情況下為“可重復讀取”)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.