您好,欢迎访问三七文档
当前位置:首页 > 高等教育 > 理学 > 04.处理错误与警告
MySQL数据库开发第四章处理错误与警告目录设置SQL模式以影响错误输出处理遗失与无效的数据值解释错误消息使用SHOWWARNING与SHOWERRORS语句调用peror工具程序4.1SQL模式场景分析1!!不符合ANSI约定能够让MYSQL符合ANSI标准?场景2在Mysql中,sql_mode可以用来解决以下问题(1)通过设置不同的sql_mode,可以在不同的严格程度对数据进行校验.有效地保证了数据准确性.(2)通过设置sql_mode为ANSI模式,来保证大多数SQL符合标准SQL的语法,这样在不同数据库之间迁移时,不需要对业务修改太多.4.1.1什么是SQL模式SQL模式可控制服务器操作方式,例如MYSQL应该支持什么SQL语法,执行什么类型数据的验证。这将使MYSQL在不同环境中的使用、以及与其他数据库一起使用更加容易两类级别:全局级别:会话级别:4.1.2查询当前模式查询全局模式设置SELECT@@global.sql_mode查询当前回话的SQL模式SELECT@@session.sql_modeSELECT@@sql_mode4.1.3设置模式启动时候设置mysql–sql_mode=“模式名”在MYSQL中设置MysqlSET[SESSION|GLOBAL]sql_mode=‘模式名’设置单个模式值:SETsql_mode=ANSI_QUOTES设置多个模式值SETsql_mode=‘IGNORE_SPACE,ANSI_QUOTES’清除模式SETsqlmode=‘’4.1.4常用的SQL模式模式类型用途包含ANSI复合改变语法与行为,更好的遵循ANSI标准ANSI_QUOTES、IGNOR_SPACE、PIPES_AS_CONCAT、REAL_AS_FLOATONLY_FULL_GROUP_BY禁止引用非GROUPBY的字段ERROR_FOR_DIVISION_BYZRO被0除产生错误,而不是NULL值STRICT_TRANS_TABLES启用严格模式,设置输入值限制STRICT_ALL_TABLESNO_ZERO_DATE是否允许0日期NO_ZERO_IN_DATE是否日期中可以包含0TRADITIONAL复合使用MYSQL行为更像其他关系数据库。。。。。。4.2处理无效或者遗漏的值4.2.1处理遗漏的值4.2.2在非严格模式下处理无效值4.2.3在严格模式下处理无效值案例分析4.2.1处理遗漏的值MYSQL将按如下规则处理缺失列:如果包含DEFAULT,将使用该默认值没有DEFAULT定义:•如果非严格模式,将插入一个隐含缺省值,并产生一个警告•严格模式下–事务表:产生一个错误,并且语句将回滚。–非事务表:也会产生一个错误但会有部分更新。4.2.2在非严格模式下处理无效值案例分析更改列j为date类型观察执行结果和最终的值4.2.2在非严格模式下处理无效值在非严格模式下,会在可能的情况下调整无效的输入值为合法值,并产生警告信息。警告信息可以用SHOWWARNINGS显示常见情况:使用INSERT、REPLACE、UPDATE或LOADDATAINFILEALTERTABLE更改列使用DEFAULT子句指定缺省值4.2.2常见的转换案例转换超出范围的值为范围内的值字符串截取枚举与SET赋值转换转换为缺省的数据类型:4.2.3在严格模式下处理无效值严格模式下服务器将拒绝这些超出范围或不正确的数据STRICT_TRANS_TABLES事务表:出错,并回滚或取消数据提交非事务表:第一行–回滚/第二行–调整为合法值STRICT_ALL_TABLES终止,会导致部分更新严格模式下其他输入数据限制被零除日期是否存在04.3解释错误信息错误信息构成MYSQL错误代码标准SQLSTATE代码错误描述文本4.4SHOWWARNINGS查看当前的警告查看某些行的警告:SHOWWARNINGSLIMIT2,3\G查看多少条警告SHOWCOUNT(*)WARNINGS警告的级别,例子见4-14ErrorWarningNote4.5SHOWERRORS类似SHOWWARNINGS,但只显示错误消息4.6perror工具Perror命令行工具查看ErrCode代码的含义ErrCode13:Permissiondenied
本文标题:04.处理错误与警告
链接地址:https://www.777doc.com/doc-3231404 .html