设为首页 收藏本站
查看: 1352|回复: 0

[经验分享] MySQL sql_model问题研究

[复制链接]

尚未签到

发表于 2018-10-11 09:29:13 | 显示全部楼层 |阅读模式
  1
  数据库在默认情况下是不开启 sql_mode 的
  服务器可以运行不同的sql mode ,设置sql_mode 的系统变量, 根据不同客户设置不同的sql mode 。
  dba可以设置全局的sql mode 应用于整个数据库。 每个应用程序可以设置其会话的sql mode 满足自身的需求。
  sql mode 影响mysql对sql语句的支持和验证检验sql执行的数据。
  查看sql_mode的设置
  全局 SELECT @@GLOBAL.sql_mode;
  当前会话 SELECT @@SESSION.sql_mode;
  设置sql_mode 全局设置还可以在mysql的配置文件my.cnf中设置。
  全局 SET GLOBAL sql_mode = 'modes';
  当前会话 SET SESSION sql_mode = 'modes';
  /*************重要的sql 模式
  最重要的sql_mode值
  ANSI
  这种模式改变语法和行为使sql更贴近标准的sql语法。**************/
  2
  支持的sql_mode 模式
  ALLOW_INVALID_DATES
  该选项并不完全对日期的合法性进行检查,只检查月份是否在1-12 之间和日期是否在1-31之间,该模式仅对date和datetime 模式有效,而对timestamp 无效,因为timestamp总是要求一个合法的输入。
  服务器要求月和天值是合法的,而不只是在1 - 12和1 - 31日。不启动严格,无效的日期等 '2004-04-31'被转换成 '0000-00-00'并生成一个警告。启用了严格模式、无效的日期生成一个错误。
  ANSI_QUOTES
  启用 ANSI_QUOTES 后,不能使用双引号来引用字符,双引号将被识别为字符。可以使用单引号

  ERROR_FOR_DIVISION_BY_ZERO
  在insert 或者update过程中,如果数据被灵除(或mod(x,0)),则产生错误(否则为警告),如果未使用该模式,那么数据被零除时mysql返回null,如果用到insert ignore或者 update ignore 中,mysql生成被零除警告,但操作结果返回null
  对数据库的操作效果也取决于严格模式的启用
  如果没有启用这个模式,除零插入 NULL并产生没有警告。
  如果启用了此模式,除零插入 NULL并产生一个警告。
  HIGH_NOT_PRECEDENCE
  NOT操作符的优先顺序是表达式例如NOT a BETWEEN b AND c被解释为NOT (a BETWEEN b AND c)。在一些旧版本MySQL中, 表达式被解释为(NOT a) BETWEEN b AND c。启用HIGH_NOT_PRECEDENCESQL模式,可以获得以前的更高优先级的结果。

  NO_AUTO_CREATE_USER
  防止GRANT自动创建新用户,除非还指定了密码。
  NO_AUTO_VALUE_ON_ZERO   禁用
  NO_AUTO_VALUE_ON_ZERO影响AUTO_INCREMENT列的处理。一般情况,你可以向该列插入NULL或0生成下一个序列号。
  NO_AUTO_VALUE_ON_ZERO禁用0,因此只有NULL可以生成下一个序列号。
  如果将0保存到表的AUTO_INCREMENT列,该模式会很有用。
  NO_BACKSLASH_ESCAPES
  禁用反斜线字符(‘\’)做为字符串内的退出字符。启用该模式,反斜线则成为普通字符。

  NO_DIR_IN_CREATE
  创建表时,忽视所有INDEX DIRECTORY和DATA DIRECTORY指令。该选项对从复制服务器有用。
  NO_ENGINE_SUBSTITUTION
  如果需要的存储引擎被禁用或未编译,抛出错误,默认情况下用默认的存储引擎。   可以防止自动替换存储引擎。
  没弄明白的选项
  1 NO_FIELD_OPTIONS
  不要在SHOW CREATE TABLE的输出中打印MySQL专用列选项。该模式在可移植模式(portability mode)下用于mysqldump。
  2 NO_KEY_OPTIONS
  不要在SHOW CREATE TABLE的输出中打印MySQL专用索引选项。该模式在可移植模式(portability mode)下用于mysqldump。
  3 NO_TABLE_OPTIONS
  不要在SHOW CREATE TABLE的输出中打印MySQL专用表选项(例如ENGINE)。该模式在可移植模式(portability mode)下用于mysqldump。
  NO_UNSIGNED_SUBTRACTION


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-620219-1-1.html 上篇帖子: MySQL 参数浅析之 sql_log_bin 下篇帖子: mysql mysql_upgrade主从升级造成的1580错误
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表