MySQL无法选择插入不同会话的行

时间:2016-02-18 00:49:59

标签: php mysql mysqli mariadb powerbuilder

我的问题在标题中。

我在应用程序中打开一个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 个答案:

答案 0 :(得分:3)

我发现这是由于隔离级别设置为“可重复读取”。 '可重复读取'意思是它所说的内容,旧会话中的每个读取都会得到完全相同的行

为了解决这个问题,我不得不将数据库设置为“已提交读取”。通过执行以下操作:

  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
    
  3. 这样,所有会话都可以看到来自其他会话的已提交更改。

    我习惯了Oracle数据库('读取已提交'默认情况下)和MySQL不同(默认情况下可重复读取)。