Error number: MY-013931; Symbol: ER_TMP_SESSION_FOR_VAR; SQLSTATE: HY000
Message: Setting session values for system variables only makes sense in a user session (failed to set ‘%s’).
错误说明
MySQL错误号MY-013931,符号ER_TMP_SESSION_FOR_VAR和SQLSTATE HY000代表客户端正在尝试在多个并发会话中更改会话变量。客户端更改会话变量时必须使用完全相同的会话,而非多个会话。
常见案例
当一个在设置会话变量时,多个会话是不允许的,可能会产生MY-013931,ER_TMP_SESSION_FOR_VAR和SQLSTATE HY000的错误。在一些情况下,这种情况可能是由复合键连接产生的,尤其是在用于更新表的SELECT表达式中,它们无法唤起会话变量的更改。
解决方法
为解决此问题,MySQL推荐只使用一个会话更改会话变量。由于复合属性的使用会引起混乱,因此MySQL建议避免使用它们,尤其在使用更新查询时,否则将无法更改会话变量。另一种可能的解决方案是,在发出更新查询时,首先关闭所有其他会话,然后再尝试更改。在使用复合键连接时,可以考虑使用存储过程来避免出现此问题,因为存储过程只有一个会话。