专栏首页菩提树下的杨过mysql的sql_mode模式

mysql的sql_mode模式

在oracle或sqlserver中,如果某个表的字段设置成not null,insert或update时不给这个字段赋值,比如下面这样:

表t_test(id,name)中id,name都不允许为空,

insert into t_test(name) values('xxx') 必然报错,这是天经地义的事情,但是在mysql中这是有可能成功,具体取决于sql_mode的设置

大概上讲,sql_mode可以分为二大类:

一类是所谓的宽松无敌模式(my.ini中sql_mode设置为空或仅NO_ENGINE_SUBSTITUTION), 这种模式下,not null 的字段,在insert或update时不设置值也能成功,db在插入时,会自动给默认值,比如int会给0值,甚至可以把abc赋值给int型的字段(当然,db会自动忽略该值,变成默认值0)

另一类的是所谓的严格模式(具体有很多可选值),设置成严格模式后,mysql就跟传统的oracle、sqlserver表现一致了,这也是我个人强烈推荐的模式。

最后,无耻的从网上抄一段贴在这里备份:

如果使用mysql,为了继续保留大家使用oracle的习惯,可以对mysql的sql_mode设置如下:

在my.cnf添加如下配置

[mysqld]

sql_mode='ONLY_FULL_GROUP_BY,NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,

ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,PIPES_AS_CONCAT,ANSI_QUOTES'

参考:

http://www.2cto.com/database/201304/202192.html

http://dev.mysql.com/doc/refman/5.5/en/sql-mode.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Android 框架学习2:源码分析 EventBus 3.0 如何实现事件总线

    Go beyond yourself rather than beyond others. 上篇文章 深入理解 EventBus 3.0 之使用篇 我们了解了 ...

    张拭心 shixinzhang
  • 性能压测诡异的Requests/second 响应刺尖问题

    最近一段时间都在忙着转java项目最后的冲刺,前期的coding翻代码、debug、fixbug都逐渐收尾,进入上线前的性能压测。 虽然不是大促前的性能压测要求...

    王清培
  • Ruby设计模式透析之 —— 策略(Strategy)

    Java设计模式透析之 —— 策略(Strategy) 今天你的leader兴致冲冲地找到你,希望你可以帮他一个小忙,他现在急着要去开会。要帮什么忙呢?你很好...

    用户1158055
  • Android中SQLite数据库小计

    2016-03-16 Android数据库支持 本文节选并翻译《Enterprise Android - Programing Android Database...

    用户1172465
  • sql 语言

    sql 语言 DDL DDL 全称 Data Definition Language,即数据定义语言。 DATABASE 创建数据库 CREATE DATABA...

    静默虚空
  • Java EE之旅07-数据库基础(1)

    数据库概述 数据库(DataBase,简称DB):指长期保存在计算机的存储设备上,按照一定规则组织起来,可以被各种用户或应用共享的数据集合。(属于文件系统) 数...

    企鹅号小编
  • 近期做的比较好的web

    ? 本文作者:p0desta。 感谢p0desta。来稿,本文稿费100元。持续小广告:各位大佬有安全方面新的创作都可以向小编砸过来,将文章以Word形式发送...

    企鹅号小编
  • MySQL插入数据与更新和删除数据

    数据插入 此前一直使用语句,但还有三个经常使用的SQL语句需要掌握(、和)。 插入的几种形式, 1. 插入完整行; 2. 插入行的部分数据; 3. 插入多行; ...

    企鹅号小编
  • Android数据库高手秘籍(八)——使用LitePal的聚合函数

    上一篇文章当中,我们已经把LitePal查询操作的所有用法都学习完了,很显然,LitePal帮我们提供了非常强大的查询API,使得我们可以极度轻松地完成各种类型...

    用户1158055
  • Android数据库高手秘籍(一)——SQLite命令

    要想熟练地操作任何一个数据库,最最基本的要求就是要懂SQL语言,这也是每个程序员都应该掌握的技能。虽说SQL博大精深,要想精通确实很难,但最基本的一些建表命令,...

    用户1158055

扫码关注云+社区

领取腾讯云代金券