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':
将以下行添加到 /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不同(默认'repeatable reads')。
我的问题在标题里。
我在一个应用程序中打开了一个 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':
将以下行添加到
/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不同(默认'repeatable reads')。