MySQL中SQL Mode的查看与设置详解
MySQL中SQLMode的查看与设置
MySQL可以运行在不同的模式下,而且可以在不同的场景下运行不同的模式,这主要取决于系统变量sql_mode的值。本文主要介绍一下这个值的查看与设置,主要在Mac系统下。
对于每个模式的意义和作用,网上很容易找到,本文不做介绍。
按作用区域和时间可分为3个级别,分别是会话级别,全局级别,配置(永久生效)级别。
会话级别:
查看-
select@@session.sql_mode;
修改-
set@@session.sql_mode='xx_mode' setsessionsql_mode='xx_mode'
session均可省略,默认session,仅对当前会话有效
全局级别:
查看-
select@@global.sql_mode;
修改-
setglobalsql_mode='xx_mode'; set@@global.sql_mode='xx_mode';
需高级权限,仅对下次连接生效,不影响当前会话(亲测过),且MySQL重启后失效,因为MySQL重启时会重新读取配置文件里对应值,如果需永久生效需要修改配置文件里的值。
配置修改(永久生效):
打开vi/etc/my.cnf
在下面添加
[mysqld] sql-mode="xx_mode"
注意:[mysqld]必须加,且sql-mode中间是“-”,而不是下划线。
保存退出,重启服务器,即可永久生效。
因为Mac下安装MySQL没有配置文件,所以需要自己手动添加。
ps
最后额外加一点东西,就是Mac下MySQL的启动、停止、重启等操作。
主要有两种方式,
一是点击”系统偏好设置“对应的MySQL面板,可实现管理。
二是命令行方式。
MySQL相关的执行脚本,常用的主要是下面两个:
/usr/local/mysql/support-files/mysql.server /usr/local/mysql/bin/mysql
mysql.server是控制服务器的启停等操作。
mysql.serverstart|stop|restart|status
mysql主要用于连接服务器。
mysql-uroot-p****-h****-D**
有些需要sudo权限,且可将相关路径添加到环境变量,可简化书写,至于如何添加是不做介绍了。
知识点扩展:
StrictMode阐述
根据mysql5.0以上版本strictmode(STRICT_TRANS_TABLES)的限制:
1).不支持对notnull字段插入null值
2).不支持对自增长字段插入''值,可插入null值
3).不支持text字段有默认值
看下面代码:(第一个字段为自增字段)
$query="insertintodemovalues('','$firstname','$lastname','$sex')";
上边代码只在非strict模式有效。
Code代码
$query="insertintodemovalues(NULL,'$firstname','$lastname','$sex')";
上边代码只在strict模式有效。把空值''换成了NULL.
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。