@@SESSION.sql_mode和@@GLOBAL.sql_mode展示了不同的选择。
STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTIONNO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTIONGLOBAL.sql_mode似乎是优先考虑的,对吗?
为什么会话设置不覆盖全局设置?
SELECT @@GLOBAL.sql_mode, @@SESSION.sql_mode;结果:

发布于 2019-09-09 22:29:39
“会话”变量应用于连接。(通常,每个客户端只有一个连接。)两个不同的客户端(或一个客户端中的不同连接)在变量中可能有不同的值。
“全局”变量是在连接时复制到“会话”中的默认值。然后,您,或者您的客户端代码,或者第三方应用程序,或者其他任何东西,都可以更改变量。
注意:一些全局变量实际上是全局的--“会话”值总是跟踪全局副本。
如果您显示来自同一连接的会话值,那么这就是连接使用的内容。如果建立单独的连接来读取值,那么所看到的可能并不是有效的。
有数以百计的第三方软件包,谁知道他们每一个做什么。此外,不同版本的包都会发生变化。
可以在会话中更改sql_mode。
在您的示例中,连接中的某些内容将STRICT_TRANS_TABLES添加到SQL_MODE中。并且它应该在连接生效,直到它再次被改变。
https://dba.stackexchange.com/questions/246817
复制相似问题