【发布时间】:2016-05-18 08:00:11
【问题描述】:
我有一个支持旧应用程序的开发人员要求我将 MySQL 模式从全局更改为严格模式 - 但是我们在同一台服务器上还有几个其他数据库显然需要严格模式。
我相信可以在会话级别更改模式,我已经尝试了以下代码来做到这一点。
session_start();
include_once("./includes/conn.php");
mysql_query("SET SESSION sql_mode = ''");
但这似乎不起作用 - 测试模式报告返回的全局值和会话值是相同的。
session User : name
session Security : 27478239
MySQL server version : 5.5.5-10.0.23-MariaDB
GLOBAL : STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
SESSION : STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
是否可以在会话级别(或数据库级别)更改 SQL 模式,如果可以,如何实现?
【问题讨论】:
-
请停止使用mysql_函数,开始使用msyqli或pdo!
-
是的,that's the syntax。它究竟是如何不符合您的要求的?
-
@davejal 这是一个可以追溯到 2001 年的应用程序,开发人员和我正在支持它,并且很快就会被一个维护得当的工具所取代。与此同时,我必须想办法。
-
@ÁlvaroGonzález 如果我在 login.php 中使用 SET SESSION sql_mode = 'NO_ENGINE_SUBSTITUTION',然后 modetest.php(仅显示设置)显示 GLOBAL : STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION SESSION : STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
-
好吧,你必须读回会话值(不是全局值),并且必须从同一个会话中执行。
标签: php mysql restriction strict