You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL 5.7无法修改事务隔离级别为READ COMMITTED求助

解决MySQL 5.7.41无法设置READ COMMITTED隔离级别的问题

问题说明

你执行SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED后,当前连接的隔离级别不会立刻改变——这个命令只对新创建的连接生效,所以需要重新登录MySQL再查看变量值。如果重启MySQL后又回到REPEATABLE-READ,说明全局配置没被永久保存。

永久修改全局隔离级别(推荐)

  1. 编辑MySQL配置文件,Ubuntu 18.04下通常是/etc/mysql/mysql.conf.d/mysqld.cnf,找到[mysqld]段落,添加:
    transaction-isolation = READ-COMMITTED
    
  2. 重启MySQL服务:
    sudo systemctl restart mysql
    
  3. 重新登录MySQL,执行以下命令验证:
    SHOW VARIABLES LIKE "%isolation";
    
    此时transaction_isolation和tx_isolation都应该显示为READ-COMMITTED。

确保Drupal会话级配置生效

如果全局修改暂时无法操作,确认settings.php的配置是否正确:

  • 检查init_commands是否放在正确的数据库数组节点下,示例配置如下:
    $databases['default']['default'] = [
      'database' => 'your_database_name',
      'username' => 'your_db_user',
      'password' => 'your_db_pass',
      'host' => 'localhost',
      'port' => '3306',
      'driver' => 'mysql',
      'prefix' => '',
      'init_commands' => [
        'isolation_level' => 'SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED',
      ],
    ];
    
  • 验证会话级别:可以在Drupal中执行自定义SQL查询SELECT @@transaction_isolation;,确认返回READ-COMMITTED。

排查配置覆盖问题

如果修改my.cnf后还是不生效,检查是否有其他配置文件覆盖了设置:

  • 执行mysqld --help --verbose | grep -A 1 "Default options",查看MySQL启动时加载的所有配置文件顺序,确保修改的是优先级最高的那个。
  • 检查/etc/mysql/conf.d/目录下的其他.cnf文件,是否有重复的transaction-isolation配置。

内容的提问来源于stack exchange,提问作者jwa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 23:15:58