今天在插入一条数据时发生错误:

Field serverid doesn’t have a default value.

serverid是设置成了not null int类型的,但是插入的是'',就报了上面的错误。在另一台机子上则不会报错。很奇怪,找了几个小时,终于找到原因了。问题详细情况如下:

例如有张usr表,start设置为not null.

CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT PRIMARY key ,
`start` int(255) NOT NULL,
`length` int(11) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

然后执行insert语句:

insert into user(length) values(1)

就报错了:

insert into user(length) values(1)

MySQL 返回: 

#1364 - Field 'start' doesn't have a default value

我在另一台机子上执行就没有问题。

在MySQL 5.0.2之后对数据输入进行了强制性的加严处理,并且保留了以前的MySQL对非法或不当值并不严厉的行为,MySQL默认是对数据进行加严处理,但你可以为不良值选择更传统的处理方法,从而使得服务器能够拒绝并放弃出现不良值的语句。

在my.cnf中

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES  (没找到这个)

其中: 
  STRICT_ALL_TABLES - Behave more like the SQL standard and produce errors when data is out of range. 
STRICT_TRANS_TABLES - Behave more like the SQL standard and produce errors when data is out of range, but only on transactional storage engines like InnoDB.

由于mysql 5.6默认用innodb ,所以用STRICT_TRANS_TABLES也容易理解。用了这个选项的话, 
那么数据库中如果是非空值的话就得设置默认值了,否则是报错的 。

假如无法看到my.ini,你可以执行以下SQL命令。

SQL:    SELECT @@GLOBAL.sql_mode;

返回:

STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION.

就说明启用严格模式了。

mysql Field xxx doesn't have a default value STRICT_TRANS_TABLES(存储引擎启用严格模式,非法数据值被拒绝)的更多相关文章

  1. mysql数据库 myisam数据存储引擎 表由于索引和数据导致的表损坏 的修复 和检查

    一.mysqlcheck 进行表的检查和修复 1.检查mysqlisam存储引擎表的状态 #mysqlcheck -uuser -ppassword database  table  -c  #检查单 ...

  2. MYSQL数据库性能调优之五:解决慢查询--存储引擎与数据类型

    3.数据类型的影响 4.存储引擎的影响 看你的mysql现在已提供什么存储引擎:mysql> show engines; 看你的mysql当前默认的存储引擎:mysql> show var ...

  3. MySQL入门第三天(下)——存储过程与存储引擎

    一.存储过程 1.简介 原始的SQL执行的流程: 通过存储过程,便可以简化以上流程,那么存储过程是什么,如何进行性能提高呢? 是什么? 存储过程是可编程的函数,在数据库中创建并保存,可以由SQL语句和 ...

  4. MySQL基础篇(05):逻辑架构图解和InnoDB存储引擎详解

    本文源码:GitHub·点这里 || GitEE·点这里 一.MySQL逻辑架构 1.逻辑架构图 基于下面的逻辑架构图,可以大致熟悉MySQL各个架构组件之间的协同工作关系. 很经典的C/S架构风格, ...

  5. 1364:Field 'sex' doesn't have a default value [ SQL语句 ]

    1364:Field 'sex' doesn't have a default value [ SQL语句 ]   错误解决方法: 关闭MySQL的strict mode的具体做法: 找到MySQL目 ...

  6. Field "details" doesn't have a default value

    [转载:原文链接http://my.oschina.net/wojibuzhu/blog/511104] MySQL 1364 错误提示:#1364 - Field "details&quo ...

  7. MySQL之Field 'email' doesn't have a default value问题

    MySQL在出现这个Field xxx doesn't have a default value错误的原因是:我们设置了该字段为非空,但是我们没有设置默认值照成的. 比如我们创建一个表: CREATE ...

  8. Field 'email' doesn't have a default value

    MySQL在出现这个Field xxx doesn't have a default value错误的原因是:我们设置了该字段为非空,但是我们没有设置默认值造成的. 或着 缺少字段.

  9. [MySQL Reference Manual]14 InnoDB存储引擎

    14 InnoDB存储引擎 14 InnoDB存储引擎 14.1 InnoDB说明 14.1.1 InnoDB作为默认存储引擎 14.1.1.1 存储引擎的趋势 14.1.1.2 InnoDB变成默认 ...

随机推荐

  1. Unity 中 使用c#线程

    使用条件   天下没有免费的午餐,在我使用unity的那一刻,我就感觉到不自在,因为开源所以不知道底层实现,如果只是简单的做点简单游戏,那就无所谓的了,但真正用到实际地方的时候,就会发现一个挨着一个坑 ...

  2. link them together by means of pointers

    Computer Science An Overview _J. Glenn Brookshear _11th Edition An alternative to storing a heteroge ...

  3. C++ 栈和队列

    使用标准库的栈和队列时,先包含相关的头文件 #include<stack> #include<queue> 定义栈如下: stack<int> stk; 定义队列如 ...

  4. 【转】Unity3D中脚本的执行顺序和编译顺序(vs工程引用关系)

    http://www.cnblogs.com/champ/p/execorder.html 在Unity中可以同时创建很多脚本,并且可以分别绑定到不同的游戏对象上,它们各自都在自己的生命周期中运行.与 ...

  5. IOS证书的申请和使用

    苹果的证书繁锁复杂,制作管理相当麻烦,今天决定重置一个游戏项目中的所有证书,做了这么多次还是感觉很纠结,索性直接记录下来,日后你我他查阅都方便: 关于证书 苹果使用密文签名技术来验证App的合法性,不 ...

  6. java的transient

    今天遇到个了一个问题,在使用Swing的drap and drop处理JTree的时候,我的TreeNode中的UserObject中引用了java.awt.Image类. 然后在dnd的时候会报ja ...

  7. [LeetCode] Simplify Path(可以不用看)

    Given an absolute path for a file (Unix-style), simplify it. For example, path = "/home/", ...

  8. pointer-events:none;穿透属性

    从属性字面上看可以理解为:手势时间无效. 当我们在ios下想复制一段文字是,不知道原因导致一些莫名的怪异现象:总是无法复制文字,却意外的发现无论怎么着复制的始终都是图片时, 当我们在一个半透明遮罩上想 ...

  9. Spark Programming--Transformations

    map 将RDD中的每个数据项,一对一的映射关系,RDD数目不变,分区数也不变 例子: 数据集: map操作: flatMap 和map一样,但是会拆分每一个map之后的list,可以理解为一对多(注 ...

  10. oracle 存储过程基础

    create or replace procedure update_CarryoverArchivers(bizsysname in varchar, year       in number de ...