MySQL sql_mode设置

在MySQL5.7版本中创建表

CREATE TABLE `investor_seat` (
  `id` int(11) NOT NULL AUTO_INCREMENT ,
  `investorId` int(11) NOT NULL  COMMENT ‘投资人id‘,
  `seatId` int(11) NOT NULL  COMMENT ‘席位id‘,
  `maybe` float NOT NULL COMMENT ‘席位归属某帮派或者某人的概率‘,
  `investorName` varchar(28) NOT NULL COMMENT ‘投资人名含机构‘,
  `seatName` varchar(108) NOT NULL COMMENT ‘席位名‘,
  `status` TINYINT NOT NULL DEFAULT 0 COMMENT ‘投资人席位状态‘,
  `addTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updateTime` timestamp NOT NULL ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARSET = utf8;

注意updateTime字段,会在创建的时候报错:

[Err] 1067 - Invalid default value for ‘updateTime‘

查找了原因,是要设置sql_mode

查看MySQL的sql_mode配置:

mysql> show variables like ‘sql_mode‘;
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
| Variable_name | Value
                                    |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
| sql_mode      | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set, 1 warning (0.00 sec)

将mysql安装文件里面的my-default.ini(windows)//etc/my.cnf(Linux)里面添加设置:

sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

http://www.nowck.com/archives/70.html

http://blog.csdn.net/wyzxg/article/details/8787878

时间: 2024-12-31 02:11:57

MySQL sql_mode设置的相关文章

MySQL数据类型:SQL_MODE设置不容忽视

[IT168 技术]SQL_MODE可能是比较容易让开发人员和DBA忽略的一个变量,默认为空.SQL_MODE的设置其实是比较冒险的一种设置,因为在这种设置下可以允许一些非法操作,比如可以将NULL插入NOT NULL的字段中,也可以插入一些非法日期,如“2012-12-32”.因此在生产环境中强烈建议开发人员将这个值设为严格模式,这样有些问题可以在数据库的设计和开发阶段就能发现,而如果在生产环境下运行数据库后发现这类问题,那么修改的代价将变得十分巨大.此外,正确地设置SQL_MODE还可以做一

源码安装mysql5.6.20&&mysql主从设置(多实例做多个主从)

一.源码安装mysql5.6.20 1.编译环境安装 yum install wget gcc* make openssl openssl-devel openssl-clients -y && yum groupinstall "Development Libraries" -y 2.源码下载(软件见Linux部署源码包) wget -P /usr/local/src/ http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.

MY SQL sql_mode设置

最近在MS SQL中添加MY SQL的链接服务器,通过openquery执行insert操作的时候,一直失败,错误信息如下: 后经多番查询,确定是目标服务器MY SQL的sql_mode设置的问题,修改如下设置即可正常插入. set sql_mode='NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' 不过最终还有点疑问,有的表主键字段在Select语句中,紧挨着Select关键字时,插入mysql表中主键的值为空,如果改变主键字段的位置,即可正常插入.原因

MySQL::SQL_MODE

SQL_MODE可能是比较容易让开发人员和DBA忽略的一个变量,默认为空.SQL_MODE的设置其实是比较冒险的一种设置,因为在这种设置下可以允许一些非法操作,比如可以将NULL插入NOT NULL的字段中,也可以插入一些非法日期,如“2012-12-32”.因此在生产环境中强烈建议开发人员将这个值设为严格模式,这样有些问题可以在数据库的设计和开发阶段就能发现,而如果在生产环境下运行数据库后发现这类问题,那么修改的代价将变得十分巨大.此外,正确地设置SQL_MODE还可以做一些约束(Constr

SQL_MODE设置

1.1.   SQL_MODE设置 在生产环境中强烈建议将这个值设置为严格模式,这样有些问题可以在数据库的设计和开发阶段就能实现,而如果在生产环境下运行数据库后发现这类问题,那么修改的代价将变得十分巨大.此外正确地设置sql_mode还可以做一些约束(constraint)检查的工作. 对于sql_mode的设置,可以在配置文件.客户端.当前会话或者全局会话中设置.查看sql_mode的设置情况: mysql>select @@global.sql_mode; +----------------

SQL_MODE设置讲解

SQL_MODE可能是比较容易让开发人员和DBA忽略的一个变量,默认为空.SQL_MODE的设置其实是比较冒险的一种设置,因为在这种设置下 可以允许一些非法操作,比如可以将NULL插入NOT NULL的字段中,也可以插入一些非法日期,如“2012-12-32”.因此在生产环境中强烈建议开发人员将这个值设为严格模式,这样有些问题可以在数 据库的设计和开发阶段就能发现,而如果在生产环境下运行数据库后发现这类问题,那么修改的代价将变得十分巨大.此外,正确地设置SQL_MODE还可以做 一些约束(Con

【转】MySQL sql_mode 说明(及处理一起 sql_mode 引发的问题)

1. MySQL 莫名变成了 Strict SQL Mode 最近测试组那边反应数据库部分写入失败,app层提示是插入成功,但表里面里面没有产生数据,而两个写入操作的另外一个表有数据.因为 insert 失败在数据库层面是看不出来的,于是找php的同事看下错误信息: [Err] 1364 - Field `f_company_id` doesn't have a default value 很明显2个 insert 操作,第一条成功,第二条失败了,但因为没有控制在一个事务当中,导致app里面依然

docker 下修改 mysql sql_mode和配置文件

原文:docker 下修改 mysql sql_mode和配置文件 打开PowerShell 首先创建mysql容器,这里我们指定使用mysql5.7的版本 docker run -d -p 3306:3306 --name mysql-docker -e MYSQL_ROOT_PASSWORD=root mysql:5.7 创建成功,查看一下运行状态 docker ps ? 可以看到我们的容器正在运行中,现在进入容器,查看一下配置文件 ? docker exec -it mysql-docke

mysql密码设置及重置方法

mysql密码设置及重置方法 作者 :小刘 今天这篇文章,我们来看下mysql数据库的密码设置,当我们不小心忘记了root密码,是一件很糟糕的事情,希望此文章可以帮助大家,我们先从设置密码开始吧!我们刚安装好的mysql数据库,默认root的密码为空,这时我们可以用一下命令设置密码mysqladmin -u root password "密码"如图(为root设置密码为123456)  如果你知道原来的旧密码,我们就可以用下面的命令直接更改就可以了mysqladmin -u root