mysql创建数据库没有默认值报错_详解Mysql数据库date, datetime类型设置0000-00-00默认值(default)报错问题...

现象:MySQL5.7版本之后,date, datetime类型设置默认值"0000-00-00",出现异常:Invalid default value for 'time'

原因:在命令行窗口查看当前的sql_mode配置:

select @@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, and NO_ENGINE_SUBSTITUTION

其中NO_ZERO_IN_DATE, NO_ZERO_DATE两个选项禁止了0000这样的日期和时间。因此在mysql的配置文件中,重新设置sql_mode,去掉这两项就可以了。

解决办法

1.windows系统下:

使用 SET [SESSION|GLOBAL] sql_mode='modes'

注意:SESSION(默认选项):表示当前回话中生效;GLOBAL(需重启):表示全局生效

也可以修改my.ini配置文件

***

演示:

SET GLOBAL sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,

ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

1.Linux系统下:

修改my.cnf文件,在[mysqld]中添加

sql-mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

修改完成一定重启MySQL

2.Mac系统下:

在MacOS中默认是没有my.cnf 文件,如果需要对MySql 进行定制,拷贝/usr/local/mysql/support-files/目录 中任意一个.cnf 文件。笔者拷贝的是my-default.cnf,将它放到其他目录,按照上面修改完毕之后,更名为my.cnf,然后拷贝到/etc目录再重启下mysql就大功告成了。

sql_mode模式问题拓展

sql_mode 常用值说明

1.SQL语法支持类

ONLY_FULL_GROUP_BY

对于GROUP BY聚合操作,如果在SELECT中的列、HAVING或者ORDER BY子句的列,没有在GROUP BY中出现,那么这个SQL是不合法的。是可以理解的,因为不在 group by 的列查出来展示会有矛盾。 在5.7中默认启用,所以在实施5.6升级到5.7的过程需要注意:

ANSI_QUOTES

启用 ANSI_QUOTES 后,不能用双引号来引用字符串,因为它被解释为识别符,作用与 ` 一样。

设置它以后,update t set f1="" ...,会报 Unknown column ‘' in ‘field list 这样的语法错误。

PIPES_AS_CONCAT

将 || 视为字符串的连接操作符而非运算符,这和Oracle数据库是一样的,也和字符串的拼接函数 CONCAT() 相类似

NO_TABLE_OPTIONS

使用 SHOW CREATE TABLE 时不会输出mysql特有的语法部分,如 ENGINE ,这个在使用 mysqldump 跨DB种类迁移的时候需要考虑

NO_AUTO_CREATE_USER

字面意思不自动创建用户。在给MySQL用户授权时,我们习惯使用 GRANT ... ON ... TO dbuser顺道一起创建用户。设置该选项后就与oracle操作类似,授权之前必须先建立用户。5.7.7开始也默认了。

2.数据检查类

NO_ZERO_DATE

认为日期 ‘0000-00-00' 非法,与是否设置后面的严格模式有关。 1.如果设置了严格模式,则 NO_ZERO_DATE 自然满足。但如果是 INSERT IGNORE 或 UPDATE IGNORE,'0000-00-00'依然允许且只显示warning 2.如果在非严格模式下,设置了NO_ZERO_DATE,效果与上面一样,'0000-00-00'允许但显示warning;如果没有设置NO_ZERO_DATE,no warning,当做完全合法的值。3.NO_ZERO_IN_DATE情况与上面类似,不同的是控制日期和天,是否可为 0 ,即 2010-01-00 是否合法。

NO_ENGINE_SUBSTITUTION

使用 ALTER TABLE或CREATE TABLE 指定 ENGINE 时, 需要的存储引擎被禁用或未编译,该如何处理。启用NO_ENGINE_SUBSTITUTION时,那么直接抛出错误;不设置此值时,CREATE用默认的存储引擎替代,ATLER不进行更改,并抛出一个 warning。

STRICT_TRANS_TABLES

设置它,表示启用严格模式。

注意 STRICT_TRANS_TABLES 不是几种策略的组合,单独指 INSERT、UPDATE出现少值或无效值该如何处理: 把 ‘' 传给int,严格模式下非法,若启用非严格模式则变成0,产生一个warning

Out Of Range,变成插入最大边界值

A value is missing when a new row to be inserted does not contain a value for a non-NULL column that has no explicit DEFAULT clause in its definition

mysql5.0以上版本支持三种sql_mode模式: set @@sql_mode=xxx模式名;

我们常设置的 sql_mode 是 ANSI、STRICT_TRANS_TABLES、TRADITIONAL,其中ANSI和TRADITIONAL是上面的几种组合。

3.ANSI模式:宽松模式,对插入数据进行校验,如果不符合定义类型或者长度,对数据类型调整或截断保存,报warning警告.

4.TRADITIONAL模式:严格模式,当向MySQL数据库插入数据时,进行数据的严格校验,保证错误数据不能插入,报error错误.用于事务时,会进行事务的回滚.

3.STRICT_TRANS_TABLES模式:严格模式,进行数据的严格校验,错误数据不能插入,报error错误。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/441800.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机专业英语霍洪涛出版社,计算机专业英语(霍洪涛)课件Chapter 4.ppt

计算机专业英语(霍洪涛)课件Chapter 4谢谢 * Chapter 4 Operating System Review 前驱,前任 后继,继任 常见的 足够的 有时;在某种情况下 不局限于 目录,存货清单 支付、支出 伪码 * predecessor successor commonplace not limit…

【HDU - 2102】A计划 (麻烦一点的bfs)

题干: 可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸的她再一次面临生命的考验。魔王已经发出消息说将在T时刻吃掉公主,因为他听信谣言说吃公主的肉也能长生不老。年迈的国王正是心急如焚,告招天下…

ubuntu cpp与mysql连接_linux(ubuntu)下C++访问mysql数据库

向表中插入(删除)一条数据 #include #include using namespace std;int main(int argc, char* argv[]){//准备mysql的访问结构MYSQL mysql;mysql_init( &mysql );mysql_real_connect(&mysql,"192.168.16.114",//要访问数据库的IP地址"root",//用户…

渤海船舶职业学院计算机应用公司,渤海船舶职业学院

2016年招生章程已经公布,出国留学网高考网为大家提供2016年渤海船舶职业学院招生章程已公布,更多高考招生信息请关注我们网站的更新!渤海船舶职业学院2016年招生章程一、学校自然情况说明学校全称:渤海船舶职业学院办学地点及校址&#xff1a…

C++手动开启O2优化(以及-O -O1 -O2 -O3优化的知识点)(竞赛可用)

O1优化会消耗少多的编译时间,它主要对代码的分支,常量以及表达式等进行优化。 O2会尝试更多的寄存器级的优化以及指令级的优化,它会在编译期间占用更多的内存和编译时间。 O3在O2的基础上进行更多的优化,例如使用伪寄存器网络&a…

nginx pdo_mysql_lnmp环境,安装PHP7的扩展pdo_mysql报错的问题?

环境信息:centos7.4 php7.2 mysql5.71.php是编译安装的2.MySQL是用rpm安装的mysql-community-client-5.7.23-1.el7.x86_64.rpmmysql-community-common-5.7.23-1.el7.x86_64.rpmmysql-community-devel-5.7.23-1.el7.x86_64.rpmmysql-community-embedded-5.7.23-1.el7…

【qduoj - 1010】easy problem(巧妙的枚举)

题干: 给你一个数字N,N的范围是1~1000000,求一个最小的正整数M,这个数字M的各个位的数字加上它本身之和恰好为N。当然,如果没有解,输出0。 输入 输入数据由多组数据组成,每行由一个数字N组成…

电大mysql实验作业_成教作业网提供国开电大 MySQl数据库应用 实验训练4答案

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼实验训练4:数据库系统维护实验目的:基于实验1创建的汽车用品网上商城,练习创建用户、权限管理,数据库备份与恢复方法,数据导出导入的方法,体会数据库系统维护的…

小学教师计算机国培培训总结,小学教师国培培训心得体会

短暂而又漫长的国培结束了,在这三个月里,收获很大,但最大的收获是思想的转变,此次培训活动安排分三个阶段:第一阶段,理论学习(1 0天);第二阶段,教学实践 (基地学习50天);第三阶段,集…

【qduoj - 1012】反转数字(模拟,水题)

题干: 反转数字 描述 输入一个 c 语言 4字节 int 范围内的数字,输出它反转后的数字。比如12345反转后是54321,-12345反转后是-54321。如果反转后的数字不在 int 范围内就输出0; 输入 每行一个 int 范围内的数字,以 …

mysql group 条件_mysql 的group by 满足的规则要求:

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/u011066470/article/details/97291377————————————————GROUP BY满足的规则:所有sele…

计算机网络技术局域网作业,计算机网络作业局域网搭建注意事项.ppt

计算机网络作业局域网搭建注意事项计算机网络基础与应用技术 第6章 局域网技术 6.1 局域网概述 6.1.1 局域网的定义与特点 6.1.1 局域网的定义与特点 6.1.2 局域网的组建模式 6.1.2 局域网的组建模式 6.1.2 局域网的组建模式 6.1.2 局域网的组建模式 6.1.3 组建对等网 6.1.3 组…

【qduoj - 1011】数组中出现最多的元素(巧妙方法 或 排序 或 map)

题干&#xff1a; 描述 给你一个数组&#xff0c;输出里面出现超过1/2的元素。保证有且只有一个解。 输入 第一行是一个整数&#xff0c;表示测试数据的组数 n&#xff0c;n < 1000万 之后每一行都是一个整数。 输出 输出出现超过1/2的那个数字。 输入样例 1 5 1 1 …

centos mysql 5.6 源码_Centos7环境中mysql-5.6.39 源码安装

1、编译安装MySQL需要一些必备的组件&#xff0c;可以直接使用yum安装即可yum -y install cmake ncurses-devel gcc-c2 创建 Mysql用户useradd mysql3 分别给mysql创建程序安装目录和数据存储目录&#xff0c;这里将mysql安装在/opt下&#xff0c;数据存储在 /data/mysql下mkdi…

2019年9月全国计算机等级考试报名,关于2019年9月全国计算机等级考试报名的通知...

关于2019年9月全国计算机等级考试报名的通知2019年9月全国计算机等级考试报名工作即将开始&#xff0c;根据教育部考试中心和安徽省教育招生考试院的要求&#xff0c;学生在网上报名及缴费。现将2019年9月全国计算机等级考试报名工作安排如下&#xff1a;一、网上报名时间2019年…

【ACM算法讲堂之 - 计算几何基础】:【点积和叉积】(附一些模板)

计算几何是算法竞赛的一大块&#xff0c;而叉积是计算机和的基础。 首先叉积是计算说向量之间的叉积&#xff0c;那么我们可以这样定义向量&#xff0c;以及向量的运算符重载。 struct Point {double x,y;Point(double x0,double y0):x(x),y(y) {} }; typedef Point Vector; V…

mysql libstdc .so.6_编译安装mysql报错 ./mysqld: /usr/lib64/libstdc++.so.6:

我遇到这个问题的时候是在连接库的时候出现的问题&#xff0c;而且不是在编译的时候出现的&#xff0c;实在运行的时候才 报错&#xff0c;出现这种问题就是因为编译库的编译器和编译当前程序的编译器版本是不一样的&#xff0c;在具体一点就是因为&#xff0c;当前程序的编译器…

极限脱出 量子计算机,《极限脱出3:零时困境》难点解密攻略 剧情通关密码一览...

《极限脱出3&#xff1a;零时困境》这款解密游戏很多时候会卡住&#xff0c;如何通关呢&#xff1f;下面小编就给大家分享一下《极限脱出3&#xff1a;零时困境》中几个难点解密&#xff0c;需要过关密码的朋友可以收藏一下哦。游戏过程中经常会卡在三处&#xff1a;1.玩家发现…

【qduoj】C语言课程设计_约瑟夫问题

题干&#xff1a; 描述 有n只猴子&#xff0c;按顺时针方向围成一圈选大王&#xff08;编号从1到n&#xff09;&#xff0c;从第1号开始报数&#xff0c;一直数到m&#xff0c;数到m的猴子退出圈外&#xff0c;剩下的猴子再接着从1开始报数。就这样&#xff0c;直到圈内只剩下…

mysql缓存淘汰机制_聊聊缓存淘汰算法-LRU 实现原理

前言我们常用缓存提升数据查询速度&#xff0c;由于缓存容量有限&#xff0c;当缓存容量到达上限&#xff0c;就需要删除部分数据挪出空间&#xff0c;这样新数据才可以添加进来。缓存数据不能随机删除&#xff0c;一般情况下我们需要根据某种算法删除缓存数据。常用淘汰算法有…