MySQL 5中,出现错误提示:

Field 'id' doesn't have a default value

解决方法一:

打开my.ini,查找

sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

修改为

sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

然后重启MYSQL

解决方法二:

MySQL 5 uses a strict mode which needs to be disabled.

In Windows, Goto Start-->Programs-->MySQL->MySQL Instance Config Wizard. Follow through the Reconfigure Instance option-->Detailed Configuration-->Continue Next a few screens. At the bottom under Enable TCP/IP option there is 'Enable Strict Mode'. Deslect this option (no tick). Save changes and MySQL will restart

原来在MySQL 5.0.2之前,MySQL对非法或不当值并不严厉,而且为了数据输入还会强制将它们变为合法值。在MySQL 5.0.2和更高版本中,保留了以前的默认行为,但你可以为不良值选择更传统的处理方法,从而使得服务器能够拒绝并放弃出现不良值的语句。本节介绍了MySQL的默认行为(宽大行为),新的严格的SQL模式,以及它们的区别。

如果你未使用严格模式,下述情况是真实的。如果将“不正确”的值插入到列,如将NULL值插入非NULL列,或将过大的数值插入数值列,MySQL会将这些列设置为“最可能的值”,而不是生成错误信息。

· 如果试图将超范围的值保存到数值列,MySQL服务器将保存0(最小的可能值)取而代之,或最大的可能值。

· 对于字符串,MySQL或保存空字符串,或将字符串尽可能多的部分保存到列中。

· 如果打算将不是以数值开头的字符串保存到数值列,MySQL将保存0。

· MySQL允许将特定的不正确日期值保存到DATE和DATETIME列(如“2000-02-31”或“2000-02-00”)。其观点在于,验证日期不是SQL服务器的任务。如果MySQL能保存日期值并准确检索相同的值,MySQL就能按给定的值保存它。如果日期完全不正确(超出服务器能保存的范围)将在列中保存特殊的日期值“0000-00-00”取而代之。

· 如果试图将NULL值保存到不接受NULL值的列,对于单行INSERT语句,将出现错误。对于多行INSERT语句或INSERT INTO ... SELECT语句,MySQL服务器会保存针对列数据类型的隐含默认值。一般情况下,对于数值类型,它是0,对于字符串类型,它是空字符串(''),对于日期和时间类型是“zero”。

· 如果INSERT语句未为列指定值,如果列定义包含明确的DEFAULT子句,MySQL将插入默认值。如果在定义中没有这类DEFAULT子句,MySQL会插入列数据类型的隐含默认值。

采用前述规则的原因在于,在语句开始执行前,无法检查这些状况。如果在更新了数行后遇到这类问题,我们不能仅靠回滚解决,这是因为存储引擎可能不支持回滚。中止语句并不是良好的选择,在该情况下,更新完成了“一半”,这或许是最差的情况。对于本例,较好的方法是“仅可能做到最好”,然后就像什么都未发生那样继续。

在MySQL 5.0.2和更高版本中,可以使用STRICT_TRANS_TABLES或STRICT_ALL_TABLES SQL模式,选择更严格的处理方式。

STRICT_TRANS_TABLES的工作方式:

· 对于事务性存储引擎,在语句中任何地方出现的不良数据值均会导致放弃语句并执行回滚。

· 对于非事务性存储引擎,如果错误出现在要插入或更新的第1行,将放弃语句。(在这种情况下,可以认为语句未改变表,就像事务表一样)。首行后出现的错误不会导致放弃语句。取而代之的是,将调整不良数据值,并给出告警,而不是错误。换句话讲,使用STRICT_TRANS_TABLES后,错误值会导致MySQL执行回滚操作,如果可以,所有更新到此为止。

要想执行更严格的检查,请启用STRICT_ALL_TABLES。除了非事务性存储引擎,它与STRICT_TRANS_TABLES等同,即使当不良数据出现在首行后的其他行,所产生的错误也会导致放弃语句。这意味着,如果错误出现在非事务性表多行插入或更新过程的中途,仅更新部分结果。前面的行将完成插入或更新,但错误出现点后面的行则不然。对于非事务性表,为了避免这种情况的发生,可使用单行语句,或者在能接受转换警告而不是错误的情况下使用STRICT_TRANS_TABLES。要想在第1场合防止问题的出现,不要使用MySQL来检查列的内容。最安全的方式(通常也较快)是,让应用程序负责,仅将有效值传递给数据库。

有了严格的模式选项后,可使用INSERT IGNORE或UPDATE IGNORE而不是不带IGNORE的INSERT或UPDATE,将错误当作告警对待。

转自:http://blog.sina.com.cn/s/blog_43ed7f260100fk6h.html

default value mysql_Mysql Field * doesn't have a default value解决方法相关推荐

  1. config.default.php,PhpMyAdmin 配置文件现在需要一个短语密码的解决方法

    本文主要介绍PhpMyAdmin 配置文件现在需要一个短语密码的解决方法,比较实用,希望能给大家做一个参考. 新版本的PhpMyAdmin 增强了安全性,需要在配置文件设置一个短语密码.否则进入之后会 ...

  2. mysql 查数据 default无效_导入mysql数据的时候提示Field * doesn't have a default value解决方法...

    项目使用django+mysql 在linux中使用的是mysql5.7,导入数据提示:Field * doesn't have a default value 想要解决问题就需要知道在mysql5. ...

  3. mysql field id doesnt have a default value_为什么出现“Field ID'doesn't have a default value”?...

    具体原因: (1)在mysql5.0.2以前,mysql对非法值检查并不严厉,而且为了数据输入还会强制将他们变为合法值. (2)在5.0.2以后的版本中,保留了以前的默认行为,但你可以为不良值选择更传 ...

  4. Mysql添加用户错误:ERROR 1364 (HY000): Field ‘ssl_cipher‘ doesn‘t have a default value解决方法

    Mysql添加用户错误:ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value解决方法 参考文章: (1)Mysql添加 ...

  5. Field ‘id‘ doesn‘t have a default value错误解决方法

    Field 'id' doesn't have a default value错误解决方法 参考文章: (1)Field 'id' doesn't have a default value错误解决方法 ...

  6. Mysql Field * doesn't have a default value解决方法

    Mysql Field * doesn't have a default value解决方法 MySQL 5中,出现错误提示: Field 'id' doesn't have a default va ...

  7. Mybatis新增数据后,报ERROR: Field * doesn‘t have a default value

    Mybatis新增数据后,报ERROR: Field * doesn't have a default value 文章目录 Mybatis新增数据后,报ERROR: Field * doesn't ...

  8. mysql doesnt have a default value_导入mysql数据的时候提示Field * doesn't have a default value解决方法...

    项目使用django+mysql 在linux中使用的是mysql5.7,导入数据提示:Field * doesn't have a default value 想要解决问题就需要知道在mysql5. ...

  9. Field 'Id' doesn't have a default value解决方法

    今天写代码遇到的一个小问题:使用工具将SQL文件导入数据库时出现的问题,一开始没注意到,后来检查了下数据表,发现在Mysql中没有将主键设置为自增,所以在使用Mybatis时获取生成主键时出现异常,异 ...

  10. Field '××××' doesn't have a default value解决方法

    Field '××××' doesn't have a default value解决方法 给表里的主键设置自增长,其他字段设置默认值

最新文章

  1. java.lang.UnsatisfiedLinkError:no jhdf5 in java.library.path问题的解决
  2. 机器学习面试题集-图解准确率,精确率,召回率
  3. 对spring 中IOC 的理解
  4. AprilTag中的g3d.h和g2d.c文件
  5. Eslint报错整理与解决方法(持续整理)
  6. 优质的空间服务商对网站优化的重要性
  7. 简单易用的倒计时js代码
  8. linux上运行项目,发布项目到 Linux 上运行 Core 项目
  9. C++对C的加强之新增Bool类型关键字
  10. T T[] toArray(T[] a);
  11. Spring Cloud Zuul网关集成JWT身份验证学习总结
  12. IIC协议范例代码(自用)
  13. 【MATLAB】铰链四杆机构运动分析(GUI设计)
  14. 计算机网络不同层中用于将网络互连的中间设备——转发器、网桥(桥接器)、路由器、网关
  15. BAT的数据红利,催生AI时代的敏捷计算力
  16. Go秒杀系统——RabbitMQ核心概念与工作模式
  17. 手机端页面自适应解决方案
  18. java实现 GeoHash 算法(GeoHash位数与距离对应关系)
  19. Windows访问共享文件报错:请检查名称拼写。否则,网络可能有问题
  20. Android友盟+U-APM快速集成与极致体验

热门文章

  1. Android复习强化笔记(二)
  2. 打靶(递归算法) | 八皇后(回溯算法)
  3. PHP7 学习笔记(十二)gRPC
  4. C++使用json的方法,把include放到项目目录下
  5. iOS开发之SQLite的Object-C封装
  6. ENVI 监督分类Max stdev from Mean 参数IDL中的设置
  7. ibatis中输入/输出各种类型的参数分析及#与$区别 (转)
  8. TSP(旅行者问题)——动态规划详解
  9. linux set 39 date 39,Linux date命令
  10. 拓端tecdat|R语言量化交易RSI策略:使用支持向量机SVM