mysql 配置 explicit_defaults_for_timestamp
在之前的配置中,除了目录之外,唯独添加了这一项配置,为什么?
因为mysql中timestamp类型和其他的类型不一样;
在之前先了解一下current timestamp和on update current timestamp:
a. current timestamp :当insert时,如果timestamp列属性设为current_timestamp,那么该列会被强制写入当前的系统时间(无论你是不是设置了默认值);
b. on update current timestamp:当update时,如果字段属性设为on update current_timestamp,那么该列会被强制写入当前系统时间(无论是否要更新该列);
官方解释如下:
1. 在默认情况下(explicit_defaults_for_timestamp=1),如果timestamp数据列没有明确设置null属性,那么该列会被自动添加not null属性,如果写入数据时设置null,那么mysql会自动把当前时间戳写入该列,作为默认值 ...
注:其他类型的列,在没有明确设置not null的情况下,默认是允许null值;
2. 表中如果有多个timestamp列,那么第一列如果没有指定null或者设置默认值,也没有指定on update语句,那么该列会被自动添加default current_timestamp和on update current_timestamp属性;
3.同第2条,除了第一列之外,其他的timestamp列如果没有指定null属性,也没有指定默认值,那么该列会被自动添加default '0000-00-00 00:00:00'属性;如果insert语句没有为该列添加指定值,那么该列会被插入'0000-00-00 00:00:00',而且不会提示警告;
所以我们在my.ini配置文件中,添加了该项配置,否则启动时,会提示以下报警:
[Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
那么添加了该项配置(explicit_defaults_for_timestamp=1)之后有什么效果呢?
1. 如果timestamp列没有显示指定not null属性,那么默认允许null,当插入数据时,不会被写入currrent timestamp;
2. mysql不会自动给第一个timestamp列添加default current_timestamp和on update current_timestamp属性(除非你在建表时显示指明);
3. 如果timestamp列指明是not null属性,而且没有指定默认值,这时候写入数据时如果不给该列写入数据,那么有以下两种情况:
a. 指定strict sql_mode的情况下,会直接报错;
b. 未指定strict sql_mode的情况下,会默认插入'0000-00-00 00:00:00',并发生一个报警;
mysql 配置 explicit_defaults_for_timestamp的更多相关文章
- 【MySQL】explicit_defaults_for_timestamp 参数详解
简介:explicit_defaults_for_timestamp 系统变量决定MySQL服务端对timestamp列中的默认值和NULL值的不同处理方法. 此变量自MySQL 5.6.6 版本引入 ...
- linux下安装apache与php;Apache+PHP+MySQL配置攻略
1.apache 在如下页面下载apache的for Linux 的源码包 http://www.apache.org/dist/httpd/; 存至/home/xx目录,xx是自建文件 ...
- MySQL 配置
MySQL 配置 1.服务启动: (1)使用 service 启动:service mysqld start (2)使用 mysqld 脚本启动:/etc/inint.d/mysqld start ( ...
- mysql配置mysql-proxy读写分离
MySQL配置读写分离 192.168.23.131与192.168.23.132两台服务器,131是主,132是从,131是读写,132是只读.myql-proxy的IP是192.168.23.13 ...
- mysql配置之skip-external-locking
转载:http://www.kuqin.com/database/20120815/328905.html MySQL的配置文件my.cnf中默认存在一行skip-external-locking的参 ...
- MySQL配置
一.登录MySQL 要登录到MySQL只需要使用如下命令. mysql -h localhost -u root -p localhost:IP地址: root:用户名: database:数据库名( ...
- hive 的mysql配置
hive默认使用的是Derby数据库,Derby是一个嵌入式数据库,数据库一般创建在运行hive命令的目录,如果切换目录运行,则找不到数据库 hive mysql配置: 官网地址:https://cw ...
- 2016年5月19日php,mysql配置
1.php配置 1. 配置disable_functiondisable_functions = eval,assert,popen,passthru,escapeshellarg,escapeshe ...
- CentOS6.5 MySQL 配置设置总结笔记
三.登录MySQL 登录MySQL的命令是mysql, mysql 的使用语法如下: mysql [-u username] [-h host] [-p[password]] [dbname] u ...
随机推荐
- 一个封装比较完整的FTP类——clsFTP
前几天,看见园子里面的博友写了一个支持断点续传的FTP类,一时技痒,干脆写了个更完整的clsFtp类.只是我写这个clsFtp不是支持断点续传的目的,而是为了封装FTP几个基本常用的操作接口. 功能 ...
- prettytensor 的使用
prettytensor 顾名思义,对原始的 tensorflow 下的 tensor 进行封装(prettytensor 以 tensorflow 为基础,二者搭配使用),使其成为一个更为接口友好的 ...
- 病毒软件,导致DNS失效的解决办法
问题症状,DNS失效了,ping域名总是失败. 问题回顾:几个周之前,某群友在群里上传了一个病毒软件,我想去测验下,最后果然中毒.前几天,把软件卸载了,上周末解决了删除最后一款软件导致无法上网的问题. ...
- 使用Opencv中均值漂移meanShift跟踪移动目标
Mean Shift均值漂移算法是无参密度估计理论的一种,无参密度估计不需要事先知道对象的任何先验知识,完全依靠训练数据进行估计,并且可以用于任意形状的密度估计,在某一连续点处的密度函数值可由该点邻域 ...
- sparksql 动态设置schema将rdd转换成dataset/dataframe
java public class DynamicDemo { private static SparkConf conf = new SparkConf().setAppName("dyn ...
- 【77.39%】【codeforces 734A】Anton and Danik
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- solrj 7.x Expected mime type application/octet-stream but got text/html.
出现这种情况是因为baseurl填写错误,最开始的时候我写的是用tomcat启动后浏览器中访问solr的地址 结果就出现了如题的异常,当然提示的是404,还有可能提示405,Method not al ...
- php自动加载类文件探讨,spl_autoload_register自动加载原理
spl_autoload_register函数是实现自动加载未定义类功能的的重要方法,所谓的自动加载意思就是 我们的new 一个类的时候必须先include或者require的类文件,如果没有incl ...
- 将普通java工程转换成maven工程
在MyEclipse10中将Maven项目转成普通Java项目后,想将Java项目转成Maven项目,结果一下子傻眼了.根本就没有攻略中提到的config标签.仔细一看,喵咪的,人家用的是Eclips ...
- Application中数据传递及内存泄漏问题
原文地址:http://android.tgbus.com/Android/tutorial/201107/359474.shtml Application的使用 Application和Actovo ...