我的问题在标题中。
我在应用程序中打开一个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;
答案 0 :(得分:3)
我发现这是由于隔离级别设置为“可重复读取”。 '可重复读取'意思是它所说的内容,旧会话中的每个读取都会得到完全相同的行。
为了解决这个问题,我不得不将数据库设置为“已提交读取”。通过执行以下操作:
将以下行添加到/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数据库('读取已提交'默认情况下)和MySQL不同(默认情况下可重复读取)。