我要求 MySQL 实例中新添加的数据库具有 READ-COMMITED 作为事务隔离级别。而其余的 DB 需要默认的 REPEATABLE-READ。
我正在尝试利用 init_connect 系统变量来检查传入会话并基于该设置在会话级别设置事务隔离。
将以下行添加到 my.cnf 并重新启动服务,我可以看到它反映了重新启动后,但是当我以测试用户身份登录时,我仍然看到默认事务隔离,这意味着我在 init_connect 中的条件不起作用。我在这里做错了什么
init_connect = "SET @@transaction_isolation = CASE CURRENT_USER() WHEN '[email protected]' THEN 'READ-COMMITTED' ELSE @@transaction_isolation END;"
谢谢
设置变量时不要使用
@@
印记。当您在表达式中使用变量的值时可以使用它,但不能在设置它时使用。例子:
这不会改变变量。但是当我省略
@@
印记时:有用!