MySQL 不能 select 插入不同的行 session

MySQL cannot select a row inserted in a different session

我的问题在标题里。

我在一个应用程序中打开了一个 MySQL session,该应用程序调用了一个创建另一个 session 的脚本。我在那个新的 session 中插入了一条记录,但是当我在之前的 session 中 select 时,我看不到插入的行。

以下是插入查询:

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

以下是select:

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

我发现这是由于隔离级别设置为 'repeatable reads'。 'Repeatable reads' 的意思就是它所说的,旧会话中的每次读取都会得到 完全相同的行 .

为了解决这个问题,我必须通过执行以下操作将数据库设置为 'read committed':

  1. 将以下行添加到 /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不同(默认'repeatable reads')。