我有一个支持旧应用程序的开发人员要求我在全局范围内更改我们的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模式,如果可以,如何实现?
答案 0 :(得分:2)
有two syntaxes(嗯,actually three)来更改会话值,所有这些都应该是等效的:
protected override bool IsAuthorized(HttpActionContext actionContext)
{
if (System.Web.HttpContext.Current.Session["Role"] == null) return false;
string role = (string)System.Web.HttpContext.Current.Session["Role"];
if ((role == "Admin" || role == "Super Admin") //recycling your condition
&& IsPermitted == PermissionsEnum.Administration) return true;
if ((role == "Collaborator"
&& IsPermitted == PermissionsEnum.Collaborator) return true;
return false;
}
要读回值:
SET SESSION sql_mode = '';
SET @@SESSION.sql_mode = '';
SET @@sql_mode = '';
当然,因为它是一个会话值: